javascript、オブジェクトデータプロパティ属性に関して次を見ました
— 構成可能: プロパティを削除または変更できるかどうかを指定します。
— Enumerable: for/in ループでプロパティを返すことができるかどうかを指定します。
— 書き込み可能: プロパティを変更できるかどうかを指定します。
ここで、「構成可能」と「書き込み可能」は同じもの (プロパティを変更できるかどうか) を表しているのに、なぜ 2 つの別個の属性が必要なのでしょうか?
javascript、オブジェクトデータプロパティ属性に関して次を見ました
— 構成可能: プロパティを削除または変更できるかどうかを指定します。
— Enumerable: for/in ループでプロパティを返すことができるかどうかを指定します。
— 書き込み可能: プロパティを変更できるかどうかを指定します。
ここで、「構成可能」と「書き込み可能」は同じもの (プロパティを変更できるかどうか) を表しているのに、なぜ 2 つの別個の属性が必要なのでしょうか?
から: http://ejohn.org/blog/ecmascript-5-objects-and-properties/
書き込み可能: false の場合、プロパティの値は変更できません。
構成可能: false の場合、プロパティを削除したり、その属性 (書き込み可能、構成可能、または列挙可能) を変更しようとすると失敗します。
Enumerable: true の場合、ユーザーが for (var prop in obj){} (または同様のもの) を実行すると、プロパティが反復処理されます。
Configurable は、キーのプロパティを 'redefine' しようとする試みを防ぎますObject.defineProperty
。chrome はエラー サインをスローします。
キャッチされていない TypeError: プロパティを再定義できません: foo
書き込み可能な属性は、この値が編集されないようにするだけです
Writable が true に設定されている場合、オブジェクト プロパティの値を変更できることを意味します。
Configurable が true に設定されている場合、オブジェクト プロパティのタイプをデータ プロパティからアクセサ プロパティに (またはその逆に) 変更できることを意味します。オブジェクトのプロパティを削除できます。