2011-08-03 6 views
14

オブジェクトを定義し、アクセッサプロパティを作成しようとしています。アクセサプロパティのエラー:コンフィグレーション不可能なプロパティ 'ステータス'を再定義できません

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: can't redefine non-configurable property 'mode'

ここに何か問題がありますか?

答えて

20

MDCドキュメントでは、 'get'と 'set'と同様に、Object.definePropertyを呼び出すときに 'configurable'フラグをtrueに設定する必要があります。

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

+3

一度設定できなかったプロパティを上書きできますか? –

+4

@TomášZatoあなたの質問に対する答えは、上記にリンクされた主要な文書にあります。 'configurable'が' false'に設定されたプロパティが定義されると、そのプロパティは変更または削除できません。 –

関連する問題