私は、このモジュールのパターンがある場合:document.getElementByIdは連鎖可能なメソッドですか?
var MODULE = (function(window){
var myPublicStuff = {};
myPublicStuff.myPublicMethod = function(e){
return e;
};
return myPublicStuff;
})(window); //edit: forgot to put I have this
これは動作します(わかりやすくするために編集)
v = document.getElementById('some-element'); //works as expected
MODULE.myPublicMethod(v); //works.
しかし、これは動作しませんが、
MODULE.myPublicMethod().document.getElementById('some-element');
または
document.getElementById('some-element').MODULE.myPublicMethod().
私は、刑務所の前のメンバーが値を返したら、それを次のリンクにつなげることができると思いましたか?それはここでは機能しませんが、私はなぜそれがわかりません。
編集:すべての回答ありがとうございます。私がやろうとしているのは、要素を取得して、そのメソッドをでチェーンを介して印刷し直すことです。それで全部です。私が 'btnPrint'を入れた場合、私はそれを私に与えたい<button type="button" id="btnPrint" class="btn">...</button>
コンソールでgetElementByIdを実行すると、私のモジュールの変数を最初に使用すると得られることになります(同じ意味です)。私は同じことをしたかっただけです連鎖された方法で。
編集:完全を期すため、これはトラヴィスがJSFiddle(感謝)の上に置くとは何ですか:
<button type="button" id="btnPrint" class="btn">...</button>
Element.prototype.myPublicMethod = function(){
//in the prototype scheme that JavaScript uses,
//the current instance of the Element is *this*,
//so returning this will return the current Element
//that we started with.
return this;
}
console.log(document.getElementById("btnPrint").myPublicMethod());
私は同意するものとします。絶対に必要でない限り、これは悪く見えます。 v
変数を避けるために
は、任意の入力のparamsなしで呼び出された場合myPublicMethod()は未定義を返しませんか? – jithinpt
はい。だから私はgetElementById関数を呼び出す必要があります。 – johnny
'MODULE.myPublicMethod()。document.getElementById(' ... ')'は、 'MODULE.myPublicMethod'が' document'プロパティを持つオブジェクトを返した場合にのみ機能し、 'getElementById'プロパティを持ちます。しかし、 'document'は' window'のグローバルプロパティであるため、他のもののプロパティとして使うことはできません。 – Xufox