Function.prototype.bind
を使用してカレーリングやその他のテクニックについて私の頭を包んでいます。
特定の状況で機能範囲(つまり、this
値)を変更することは非常に便利です。JavaScriptのバインドされた関数からアンバウンド関数を取得できますか?
しかしit looks like you can't change the scope with bind
あなたはすでにそのようにした後:
function f = obj.method.bind(42);
function g = obj.method.bind('Hi');
function f2 = f.bind('Hi'); // “this” is still 42
それがすべてでバインドされた機能から元の未結合の機能を取得することは可能ですか?基本的には指定されたコンテキストと引数で自身を呼び出す別の関数を返すですので
function bind(context) {
var self = this;
return function() {
self.apply(context, arguments);
}
}
:(引数はコンテキストを除外するためにスライスされているので、ない正確に)bind
方法は、基本的に何
試してみましたか? –
@マーティン:今私はフィドルを作成しています。それは答えを知っている人にとっては非常に単純な質問のように思えます。なぜ私は先の研究なしで質問を投稿したのですか? –
@Martin:私の仮定を確認しました。(http://jsfiddle.net/dXq2E/)、実際には 'bind'を使ってスコープを2回変更することはできません。それで、それはまったく可能ですか?何らかの種類の「アンバインド」がありますか? –