gpt4 book ai didi

javascript - 无法删除 javascript 对象属性

转载 作者:行者123 更新时间:2023-11-28 14:37:12 25 4
gpt4 key购买 nike

我按照以下方式使用 Object.create 创建了一个对象。

var myObject = {
price: 20.99,
get_price: function() {
return this.price;
}
};

var customObject = Object.create(myObject, {
price: {
value: 100
}
}
);

console.log(delete customObject.price);

我尝试使用删除自定义对象价格

删除 customObject.price 返回 false

最佳答案

Object.create() 的第二个参数的解释方式与 Object.defineProperties() 的第二个参数完全相同。该 false 是从 delete 表达式返回的,因为您要删除的属性是自己的不可配置属性,并且您不处于“严格”模式。在“严格”模式下,您会得到一个异常(exception)。

如果您创建的属性的“可配置”标志设置为 true,您将从 delete 中获取 true:

var customObject = Object.create(myObject, {
price: {
value: 100,
configurable: true
}
}
);

或者您可以创建对象并通过简单的赋值来设置属性:

var customObject = Object.create(myObject);
customObject.price = 100;

此类属性始终“天生”为可配置的。

您可以使用Object.getOwnPropertyDescriptor(customObject, "price")来检查您要删除的属性是否可配置:

if (Object.getOwnPropertyDescriptor(customObject, "price").configurable)
delete customObject.price;

关于javascript - 无法删除 javascript 对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49494359/

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