バインディング関数用の ES5 シムは Javascript です
質問
以下は JS バインディング用の ES5 シムです。理解できません。 自己バインドされた関数で .apply を使用します。applyメソッドの使い方はわかるのですが、どこにあるのでしょうか? 自己 この場合は?を指します。それはそうあるべきだった
機能ですが、ここでは 自己 物体のように見えます。
if ( !Function.prototype.bind ) {
Function.prototype.bind = function( obj ) {
var slice = [].slice,
args = slice.call(arguments, 1),
self = this,
nop = function () {},
bound = function () {
return self.apply( this instanceof nop ? this : ( obj || {} ), // self in this line is supposed
to // represent a function ?
args.concat( slice.call(arguments) ) );
};
nop.prototype = self.prototype;
bound.prototype = new nop();
return bound;
};
}
解決
JavaScript ほとんどはすべてオブジェクトです。
だからそれはそれを持っています:
self= this
だから、自己はを表すではありません、自己はインスタンスです。
他のヒント
self
という事実に対応するために、リストしたシムで使用されています。 this
範囲の変更に伴い変更されます。Function.prototype.bind 関数の直接スコープ内 this
バインド関数が呼び出されたオブジェクトを参照します。
ネストされたスコープに入ると、 bound
関数 this
変更されました;著者が割り当てた self = this
以内 bind
の値を許可する関数 this
当時 bind
が利用可能な状態を維持するために呼び出されます。 bound
字句スコープ (クロージャ) を介して機能します。
JavaScript 内のスコープ設定は非常に複雑になる場合があります。詳細な説明については、この記事を参照してください。
所属していません StackOverflow