【问题标题】:Error in accessor property: can't redefine non-configurable property 'status'访问器属性中的错误:无法重新定义不可配置的属性“状态”
【发布时间】:2011-10-18 22:48:03
【问题描述】:

我正在尝试定义一个对象并为其创建一个访问器属性

HTML:

<input type='hidden' id='crudMode' value='Create' />

JavaScript:

crudMode = {
   create: "Create",
   read: "Read",
   update: "Update",
   delete: "Delete",
   current: function () { return $('#crudMode').val(); }
}

Object.defineProperty(crudMode, 'mode', {
    get: function(){
        return this.current();
    },
    set: function(value){ 
        $('#crudMode').val(value);
    }
});

但是当我使用它时,它会在问题标题中抛出提到的错误:

console.log(crudMode.mode);

投掷:

TypeError: 无法重新定义不可配置的属性 'mode'

这里有什么问题?

【问题讨论】:

标签: javascript properties javascript-objects defineproperty


【解决方案1】:

MDC 文档说,在调用 Object.defineProperty 时,除了 'get' 和 'set' 之外,还需要将标志 'configurable' 设置为 true。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty

【讨论】:

  • 我可以覆盖曾经被设置为不可配置的属性吗?
  • @TomášZato 您的问题的答案在上面链接的主要文档中。一旦将属性定义为configurable 设置为false,就无法修改或删除该属性。
猜你喜欢
  • 2023-03-24
  • 2015-06-13
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2018-04-12
相关资源
最近更新 更多