无法删除javsacript对象属性

时间:2018-03-26 14:49:56

标签: javascript

我使用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

1 个答案:

答案 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;