https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/definePropertyの状態:
構成可能:このプロパティ記述子のタイプが変更される可能性があり、プロパティが対応するオブジェクトから削除される可能性がある場合にのみtrue。デフォルトは
false
。
だから、私は
var x = Object.defineProperty({}, "a", {
value:true,
writable:true,
enumerable:true,
configurable:false
});
x.a = false
これで、などで遊ぶことができますfor(i in x)
。ただし、記述子は構成できないはずですが、実行できます。
Object.defineProperty(x, "a", {writable:true}); // others defaulting to false
Object.defineProperty(x, "a", {}); // everything to false
Object.freeze(x); // does the same to the descriptors
逆に、それらを再びtrueに設定するか、アクセサー記述子を定義しようとすると、エラーが発生するようになりました。正確には:Object.defineProperty: invalid modification of non-configurable property
。
記述子が構成不可能であると言われているのに、なぜ記述子を「ダウングレード」できるのですか?