Ошибка в свойстве аксессора: невозможно переопределить ненастраиваемое свойство status - PullRequest
14 голосов
/ 03 августа 2011

Я пытаюсь определить объект и создать для него свойство доступа .

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'

Что здесь не так?

1 Ответ

20 голосов
/ 03 августа 2011

Документация MDC гласит, что, наряду с 'get' и 'set', вам необходимо установить флаг 'configurable' в значение true при вызове Object.defineProperty.

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

...