このページで実行済みのコード
var obj = {}; // obj.foo を定義する Object.defineProperty(obj, 'foo', { value: 'bar', // 初期値 writable: false, // 書き込み不可 enumerable: false, // 列挙されない configurable: false // 再定義不可 });
開発コンソールで以下のコードを実行して結果を確認してみてください
// obj.foo は書き込み不可 > obj.foo = 'baz'; "baz" > obj.foo; "bar" // obj.foo は列挙されない > Object.keys(obj); [] // 設定に関わらずすべてのプロパティを列挙する > Object.getOwnPropertyNames(obj); ["foo"] // obj.foo は再定義不可 > delete obj.foo; false > obj.foo; "bar" > Object.defineProperty(obj, 'foo', { configurable: true }); TypeError: Cannot redefine property: foo // 現在のディスクリプタを確認する > Object.getOwnPropertyDescriptor(obj, 'foo'); Object {value: "bar", writable: false, enumerable: false, configurable: false}