示例:
function testFunc() {
this.insideFunc = function(msg) {
alert(msg);
}
return this;
}
testFunc().insideFunc("Hi!");
insideFunc("Hi again!");
为什么内部函数在全局范围内可见,如何防止?
答案 0 :(得分:5)
那是因为this
是window
。
要以这种方式使用this
,您必须使用:
var _testFunc = new testFunc();
答案 1 :(得分:2)
根据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;
}
答案 2 :(得分:2)
您可以尝试这样的事情:
var testFunc = function() {
function insideFunc(message) {
alert(message);
}
return {
insideFunc: insideFunc
}
}
testFunc().insideFunc("Hi!");
insideFunc("Hi again!");