我使用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价格 delete customObject.price
返回false
答案 0 :(得分:4)
Object.create()
的第二个参数的解释方式与Object.defineProperties()
的第二个参数完全相同。从false
表达式返回delete
,因为您要删除的属性是一个自己的不可配置属性,并且您不在" strict"模式。在"严格"模式你得到例外。
如果您使用" configurable"创建了该属性。标记设置为true
,您将从true
获得delete
:
var customObject = Object.create(myObject, {
price: {
value: 100,
configurable: true
}
}
);
或者您可以创建对象,只需使用简单的赋值设置属性:
var customObject = Object.create(myObject);
customObject.price = 100;
这些属性总是“出生”#34;可配置。
您可以使用Object.getOwnPropertyDescriptor(customObject, "price")
检查您要删除的媒体资源是否可配置:
if (Object.getOwnPropertyDescriptor(customObject, "price").configurable)
delete customObject.price;