qod*_*nja 27 javascript reference object readonly
可能重复:
可以在纯JavaScript中实现只读属性吗?
我有一个Object,我只想在构造时定义它.如何防止对象引用被更改?
CMS*_*CMS 51
在目前广泛使用的实现中,ECMAScript 3不支持真正的不变性.
在ECMAScript的5标准增加了Object.seal和Object.freeze方法.
该Object.seal方法将阻止属性添加,仍允许用户写入或编辑属性.
该Object.freeze方法将完全锁定一个对象.对象将保持与冻结时完全一样,一旦对象被冻结,它就不会被解冻.
总之,对于真实对象的不变性,我们将不得不等到ECMAScript 5.
更多信息:
spe*_*der 15
实际上......不要覆盖它.您总是可以通过将其包装在仅提供没有SetObj的GetObj的对象中来控制访问,但当然,包装器同样可以覆盖,因为它的"私有"成员属性将通过GetObj方法"隐藏".
实际上,问题是一个骗局:
编辑:
阅读http://javascript.crockford.com/private.html后,可以使用闭包来创建外部世界无法访问的变量引用.例如:
function objectHider(obj)
{
this.getObject=function(){return obj;}
}
var someData={apples:5,oranges:4}
var hider=new objectHider(someData);
//... hider.getObject()
Run Code Online (Sandbox Code Playgroud)
在创建对象后,无法修改objectHider中对obj的引用.
我试图想到这个的实际用途.