防止将属性添加到JavaScript对象

时间:2016-07-10 22:25:51

标签: javascript

我基本上只是想知道是否有一些标准化的方法来阻止将方法/属性添加到JavaScript对象中?

作为一名c ++程序员,当你可以动态地向对象添加属性时,似乎最终会遇到很多令人头痛的问题,试图调试JavaScript代码,尤其是在大型代码库中。

2 个答案:

答案 0 :(得分:3)

有点排序,ES5.1 Object.freeze功能可以阻止添加新属性,以及防止现有属性发生变化。

工作示例:



var o = {
  a: 123
};
o.b = 456;

// Freeze the object.
Object.freeze(o);

// Log the object.
console.log(o);

// These do nothing, properties do not change and are not added.
o.b = 0;
o.c = 789;

// Log the object.
console.log(o);




话虽如此,JavaScript是一种超级动态语言,因此广泛地这样做可能会被视为反模式。

如果冻结限制太多,其他选项包括Object.preventExtensionsObject.seal,具体取决于您希望阻止的内容。

或者ES6 Proxy objects可以更好地控制可以添加或修改哪些属性。

答案 1 :(得分:0)

不是真的。可能有办法配置您不希望能够仅添加新属性的对象,但没有任何实际或标准化的对象。作为一名javascript开发人员,我不认为这是一个问题。我相信打字稿可以通过界面为此做点什么,如果你开始附加它并不期望的属性,它会发出警告。很多javascript开发人员都不喜欢这个,但你可能想尝试一下https://www.typescriptlang.org/docs/tutorial.html