这里「对象的私有属性」意思是
实现实例对象的私有属性,使用的是模块模式,即使用 IIFE
const anObject = (function() {
let name = 'object'; // 一个私有属性
function getName() {
return name;
}
function setName(newValue) {
name = newValue;
}
return {
getName: getName,
setName: setName,
};
}());
console.log(anObject.name); // undefined, 不能访问内部数据 name
console.log(anObject.getName()); // object, 通过对外暴露的方法访问内部数据 name
anObject.name = 'abc';
console.log(anObject.name); // abc, 这只是为 anObject 动态添加了一个属性 name, 并不能设置其内部数据 name
console.log(anObject.getName()); // object
anObject.setName('tcejbo'); // 通过对外暴露的方法,设置内部数据 name 的值
console.log(anObject.getName()); // tcejbo
最后,anObject
对象应该是
getName
与 setName
两个方法的对象name
字段,但外部并不能直接访问的对象