質問

以下は 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 内のスコープ設定は非常に複雑になる場合があります。詳細な説明については、この記事を参照してください。

JavaScript スコープについて知りたかったすべて。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top