2

私がこれをしたら:

var x = { };
Object.freeze( x );

x を変更する方法はありますか? ありがとう。

4

2 に答える 2

2

フリーズされたオブジェクトのプロパティ セットに対して何も追加または削除することはできません。そうしようとすると、暗黙的に、または TypeError 例外をスローすることによって失敗します (厳密モードの場合に最も一般的ですが、排他的ではありません)。

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

次のように考えることができます。

if( typeof ChuckNorris === 'undefined' ) {
    ChuckNorris = Object.create( [Infinity], {
        canCountTo: {
            value: Infinity * 2,
            writable: true,
            configurable: true
        }
    });

    Object.freeze( ChuckNorris ); // nothing can harm Chuck anymore !
}

console.log( ChuckNorris.canCountTo );  // Infinity
delete ChuckNorris.canCountTo;
console.log( ChuckNorris.canCountTo );  // Infinity

したがって、基本的には、作成後freezeにオブジェクトwritableconfigurableフラグを false に設定します。

于 2011-09-16T09:41:15.787 に答える