JavaScript面接試験問題まとめシリーズ(八)


8.JavaScript-thisオブジェクト
オブジェクト
  • thisは、常に間接的な使用者ではなく、関数の直接的な使用者を指す.
  • newキーワードがあれば、thisはnewから出てくるその対象を指します.
  • イベントにおいて、thisはこのイベントをトリガするオブジェクトを指し、特に、IE中のatachEventのthisは常にグローバルオブジェクトWindow
  • を指す.
  • は、匿名関数または直接呼び出しの関数に対して、thisはグローバルコンテキスト(ブラウザはwindow、NodeJSはglobal)
  • を指す.
  • はもちろんes 6の矢印関数があります.矢印関数の方向は矢印関数の宣言の位置によって決まります.どこで宣言しますか?thisはどこを指しますか?
  • this、関数実行のコンテキストは、appy、call、bindによってthisの指向を変えることができます.
  • call()、appy()、bind()
  • call()とappy()の違い
  • call()着信パラメータは単一のパラメータであり、複数あり得る.
  • appy()に入力されたパラメータは、配列
  • である.
  • bitは関数を返し、コリゼーションを実現することができます.強いバインディングです.
  • はどうやって一つのbind関数を実現しますか?
  • Function.prototype.bind2 = function (context) {
    
        if (typeof this !== "function") {
          throw new Error("Function.prototype.bind - what is trying to be bound is not callable");
        }
    
        var self = this;
        var args = Array.prototype.slice.call(arguments, 1);
    
        var fNOP = function () {};
    
        var fBound = function () {
            var bindArgs = Array.prototype.slice.call(arguments);
            return self.apply(this instanceof fNOP ? this : context, args.concat(bindArgs));
        }
    
        fNOP.prototype = this.prototype;
        fBound.prototype = new fNOP();
        return fBound;
    }
    calee、caller
  • カレント関数を呼び出した関数の参照を返します.
  • caleeは実行中のfunction関数、すなわち指定されたfunctionオブジェクトの本文
  • に戻る.
    参照リンク:
    http://blog.poetries.top/FE-Interview-Questions/base/#_70-javascript%E 4%B 8%ADcalee%E 5%92%8 Ccaler%E 7%E 7%9 A%84%E 4%BD%9 C%E 7%94%A 8%EF%9 Fhttps://github.com/mqyqingfeng/Blog/issues/12
    https://juejin.im/post/5b3c3377f265da0f8f20131f
    https://juejin.im/post/59093b1fa0bb9f006517b906