【发布时间】:2017-08-11 15:33:01
【问题描述】:
我有一些全局对象 CD,它的属性集如下:
window.cd = {
config:{
title:"..."
}
a:func...,
b:56,
c:..
}
我希望用户允许向 cd 和 cd.config 添加属性,但要密封属性 cd.a, cd.b, cd.config.title(不允许修改)。
用户不能同时删除 window.cd 或这些属性(他可以删除或修改的其他属性)。
我尝试了以下方法:
window.cd.a.seal();
window.cd.b.seal();
window.cd.config.title.seal();
但它引发了以下错误:
window.cd.config.title.seal 不是函数
【问题讨论】:
-
Object.seal是函数 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…,String.seal不是(window.cd.config.title是字符串) -
那么如何实现我的要求我想阻止用户修改标题。
-
你必须密封一个对象,而不是它的个别属性。此外,密封不会阻止属性值的更改,它只会阻止添加或更改属性。也许您想将它们标记为不可写developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
-
@JasonFetterly 以及如何防止 cd 与定义属性一起删除。
-
你不能阻止 window.cd 被删除,除非你把它放在另一个对象里面 - 'window' 不能被密封。
标签: javascript object defineproperty seal