gpt4 book ai didi

javascript - 不允许在对象中设置新的或未声明的属性

转载 作者:行者123 更新时间:2023-11-30 09:58:11 25 4
gpt4 key购买 nike

假设我有一个带有一些属性的 JavaScript 对象。

var properties = {
x : 10,
y : 20,
z : 30,
};

在这里,我声明并定义了属性 xyz。因此,我可以分别使用 properties.xproperties.yproperties.z 访问它们。

假设我现在尝试设置另一个我尚未声明的属性。

properties.foo = 100;

事实证明这是允许的,properties.foo 现在被定义为 100

但是,由于我从未在 var properties = { ... } 中声明过 foo,所以我想这样当有人试图设置 foo,抛出异常。

或者更一般地说,当有人试图设置我最初未在 var properties = { ... } 中声明的任何属性时,我想抛出一个异常。

这可能吗?

理想情况下,我应该仍然能够更改我之前设置的属性。因此,我仍然可以毫无问题地执行 properties.x = 40;

我想要这样做的动机是防止在更改现有属性时出现拼写错误。例如,我打算设置properties.x = 40,但不小心写成了properties.c = 40。这可能会产生不良影响和/或引起调试麻烦。


Here is an example in jsfiddle.

var properties = {
x : 10,
y : 20,
z : 30,
};

console.log(properties.x); // ok, logs 10
console.log(properties.y); // ok, logs 20
console.log(properties.z); // ok, logs 30

properties.foo = 100; // should not be ok, because there is no foo in properties.

properties.x = 40; // should be ok.
console.log(properties.x); // ok, logs 40

console.log(properties.foo); // logs 100, but should be undefined.

最佳答案

JavaScript 允许您随时添加属性。代码正在做它应该做的事情。如果你想阻止这种情况,你必须使用 EcmaScript5 函数

Object.freeze()

在你的对象上。这使得它不可更改。

关于javascript - 不允许在对象中设置新的或未声明的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33008631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com