JavaScript面接試験問題まとめシリーズ(八)
1692 ワード
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関数を実現しますか? カレント関数を呼び出した関数の参照を返します. 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
オブジェクト
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参照リンク:
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