【发布时间】:2026-01-23 19:40:02
【问题描述】:
我需要在我的命名空间中包含“私有”和“公共”成员的函数,并且想知道内部发生了什么,因为我无法追溯变量处理。
应直接分配公共变量“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.
这里发生了什么?为什么我不能以这种方式更改“公共”变量,以便在内部正确使用它? 如果我像这样更改 publicFoo() 并将 publicVar 与“this”一起使用,它可以正常工作:
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
非常感谢您的回答。
【问题讨论】:
标签: javascript this private public