我想知道如何从JavaScript模块中的私有(private)和公共(public)函数访问公共(public)属性?
例如,如果这是我的模块:
var PersonModule = (function(){
var sayHello = function(){
alert("Hello " + name);
}
var privateChangeNameToBob = function(){
this.name = "Bob";
}
var changeName = function(){
privateChangeNameToBob();
}
return {
name: "",
sayHello: sayHello,
changeName: changeName
}
})();
sayHello
或changeName
函数均无法正常工作,因为我不知道如何访问公共(public)name
属性。有没有办法做到这一点?我已经通过将私有(private)变量与getter和setter结合使用来解决此问题,但是我想知道如果没有它们,是否可以做到这一点。 最佳答案
您需要对结果对象的引用:
var PersonModule = (function(){
function sayHello() {
alert("Hello " + person.name);
}
function privateChangeNameToBob() {
person.name = "Bob";
}
function changeName() {
privateChangeNameToBob();
}
const person = {
name: "",
sayHello,
changeName
};
return person;
})();
当然,考虑到您的单例IIFE模块,您也可以直接引用
PersonModule.name
。