私はコンストラクタとクロージャを持っています。'this'のコンテキストを変更せずにJavascriptで 'バインド'するにはどうすればいいですか?
私のコンストラクタ関数:
var Item = function(data) {
this.sayThis = function() {
console.log(this);
};
this.data = data;
};
私の閉鎖機能:
var $item = function(document, window, ..., itemData) {
return new Item(itemData);
}.bind(dontWannaPutAnythingHere, document, window, .../*except itemData*/);
i 'はthisArg' で何かを使用している場合は、新たに形成されたオブジェクト内のthisのコンテキストがどのような傾向にありますこれまでに与えられたものです。私はそれを望んでいませんが、私はそれらの文書、ウィンドウ、ものをバインドしたいので、別の時に最後の引数項目データを提供することができます。
私はつもりだが
// Calling it normally.
var someItem = $item("chocolate");
// This should result in Item {data: "chocolate", ...}
// and not anything else.
var someItem = $item("chocolate").sayThis();
乾杯、 Rjの
あなたが探している用語は「部分的なアプリケーション」です。 – Bergi
実際に 'bind'を呼び出す関数は' return new Item(itemData);のみを実行し、 'this'はまったく使用しないので、thisArgumentに渡すものとは無関係です。ちょうど 'ヌル 'を使用してください。 – Bergi
ありがとうbergi。はい、私はオブジェクトのようなjQueryを作成するためにこのクロージャーを使用するつもりです。それは独立した環境にある変数を持つことができます。 -cheers、Rj –