我基本上只是想知道是否有一些标准化的方法来阻止将方法/属性添加到JavaScript对象中?
作为一名c ++程序员,当你可以动态地向对象添加属性时,似乎最终会遇到很多令人头痛的问题,试图调试JavaScript代码,尤其是在大型代码库中。
答案 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.preventExtensions
和Object.seal
,具体取决于您希望阻止的内容。
或者ES6 Proxy objects可以更好地控制可以添加或修改哪些属性。
答案 1 :(得分:0)
不是真的。可能有办法配置您不希望能够仅添加新属性的对象,但没有任何实际或标准化的对象。作为一名javascript开发人员,我不认为这是一个问题。我相信打字稿可以通过界面为此做点什么,如果你开始附加它并不期望的属性,它会发出警告。很多javascript开发人员都不喜欢这个,但你可能想尝试一下https://www.typescriptlang.org/docs/tutorial.html