32

javascript、オブジェクトデータプロパティ属性に関して次を見ました

— 構成可能: プロパティを削除または変更できるかどうかを指定します。

— Enumerable: for/in ループでプロパティを返すことができるかどうかを指定します。

— 書き込み可能: プロパティを変更できるかどうかを指定します。

ここで、「構成可能」と「書き込み可能」は同じもの (プロパティを変更できるかどうか) を表しているのに、なぜ 2 つの別個の属性が必要なのでしょうか?

4

4 に答える 4

33

から: http://ejohn.org/blog/ecmascript-5-objects-and-properties/

書き込み可能: false の場合、プロパティの値は変更できません。

構成可能: false の場合、プロパティを削除したり、その属性 (書き込み可能、​​構成可能、または列挙可能) を変更しようとすると失敗します。

Enumerable: true の場合、ユーザーが for (var prop in obj){} (または同様のもの) を実行すると、プロパティが反復処理されます。

于 2014-08-19T14:18:17.463 に答える
3

Configurable は、キーのプロパティを 'redefine' しようとする試みを防ぎますObject.defineProperty。chrome はエラー サインをスローします。

キャッチされていない TypeError: プロパティを再定義できません: foo

書き込み可能な属性は、この値が編集されないようにするだけです

于 2016-02-19T13:18:09.087 に答える
1

Writable が true に設定されている場合、オブジェクト プロパティの値を変更できることを意味します。

Configurable が true に設定されている場合、オブジェクト プロパティのタイプをデータ プロパティからアクセサ プロパティに (またはその逆に) 変更できることを意味します。オブジェクトのプロパティを削除できます。

于 2016-08-31T01:43:06.807 に答える