访问者属性出错:无法重新定义不可配置的属性"status"

Sae*_*ati 14 javascript properties javascript-objects defineproperty

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

HTML:

<input type='hidden' id='crudMode' value='Create' />
Run Code Online (Sandbox Code Playgroud)

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);
    }
});
Run Code Online (Sandbox Code Playgroud)

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

console.log(crudMode.mode);
Run Code Online (Sandbox Code Playgroud)

抛出:

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

这有什么不对?

Mat*_*son 20

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

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

  • @TomášZato您的问题的答案在上面链接的主要文档中.一旦定义了`configurable`设置为`false`的属性,就不能修改或删除该属性. (5认同)
  • 我可以覆盖曾经设置为不可配置的属性吗? (3认同)