IIFE を使用して私が見た 2 つの方法 (他にもあることはわかっています):
(function(){
console.log(this);
}).call(this);
(function(){
console.log(this);
})();
最初のものを使用する理由はあります.call(this)
か?();
関数内で同じコンテキストを生成しませんか?
IIFE を使用して私が見た 2 つの方法 (他にもあることはわかっています):
(function(){
console.log(this);
}).call(this);
(function(){
console.log(this);
})();
最初のものを使用する理由はあります.call(this)
か?();
関数内で同じコンテキストを生成しませんか?
これは、コードが実行される場所によって異なります。
.call(this)
this
を渡したオブジェクトに明示的に設定します.call
。を使用する場合にのみ、();
に設定さthis
れますwindow
(またはundefined
厳密モードでは to に設定されます)。
コードがグローバル スコープで実行される場合、それは同じになります。this
そうでない場合、が参照していないwindow
(または である)場合は、異なる結果が得られますundefined
。
例:
var obj = {
foo: function() {
(function(){
console.log(this); // this === obj
}).call(this); // this === obj
(function(){
console.log(this); // this === window
})();
}
};
obj.foo();