例:
function testFunc() {
this.insideFunc = function(msg) {
alert(msg);
}
return this;
}
testFunc().insideFunc("Hi!");
insideFunc("Hi again!");
内部関数がグローバルスコープで表示されるのはなぜですか、それを防ぐ方法は?
例:
function testFunc() {
this.insideFunc = function(msg) {
alert(msg);
}
return this;
}
testFunc().insideFunc("Hi!");
insideFunc("Hi again!");
内部関数がグローバルスコープで表示されるのはなぜですか、それを防ぐ方法は?
それはですからthis
ですwindow
。
この方法で使用するには、次を使用this
する必要があります。
var _testFunc = new testFunc();
ethagnawlの答えに基づいてnew
、呼び出し元が次のことを忘れた場合に、このトリックを使用して関数を強制的に実行できます。
function testFunc() {
// if the caller forgot their new keyword, do it for them
if (!(this instanceof testFunc)) {
return new testFunc();
}
this.insideFunc = function(msg) {
alert(msg);
}
return this;
}
あなたはこのようなことを試すことができます:
var testFunc = function() {
function insideFunc(message) {
alert(message);
}
return {
insideFunc: insideFunc
}
}
testFunc().insideFunc("Hi!");
insideFunc("Hi again!");