使用揭示模式来创建对象,我们可以使用闭包来隐藏数据和方法:
var myObject = (function() {
var privateData = "I'm hidden!";
function privateMethod() {
console.log("This method is also hidden!");
}
return {
publicMethod: function() {
console.log("This method is public!");
}
}
})();
myObject.publicMethod(); // Output: "This method is public!"
myObject.privateData; // Output: undefined
myObject.privateMethod(); // Output: TypeError because privateMethod is not a property of myObject
在上面的示例中,我们创建了一个称为 myObject
的对象,并使用闭包来隐藏 privateData
和 privateMethod
。只有在对象内部才可以访问它们,因为它们被视为私有的。我们返回一个只有 publicMethod
的对象字面量,它是该对象的公共接口。可以通过 myObject.publicMethod()
来访问该接口。
请注意,私有数据和方法不能从对象的外部访问。也就是说,myObject.privateData
和 myObject.privateMethod()
都是 undefined
,因为它们都是私有的,并不属于对象的公共接口。