0
我需要在我的命名空間中使用「private」和「public」成員的函數,並且想知道內部發生了什麼,因爲我無法回溯變量處理。自執行功能中的內部變量處理
公共變量「publicVar」應直接分配,如:「myNamespace.publicVar = true」。
var myNamespace = (function() {
var _privateVar = "not accessible",
publicVar = false;
function publicFoo() {
if (publicVar) {
console.log("var is true");
} else {
console.log("var is false");
}
}
return {
publicVar: publicVar,
publicFoo: publicFoo
}
})();
myNamespace.publicFoo(); // output--> var is false
myNamespace.publicVar = true;
myNamespace.publicFoo(); // output --> var is false
myNamespace.publicVar; // output--> true of course.
這裏會發生什麼?爲什麼我不能以這種方式更改「public」變量,以便正確使用內部變量? 如果我改變publicFoo()這樣和使用publicVar與「本」,它工作正常:
function publicFoo() {
if (this.publicVar) {
console.log("var is true");
} else {
console.log("var is false");
}
}
但我能避免「本」?還是有更好的方法來處理它?
myNamespace.publicFoo(); // output --> var is false
myNamespace.publicVar = true;
myNamespace.publicFoo(); // output --> var is true
非常感謝您的回答。