【JSリファレンス】Object.freeze()
更新日:2024/06/14
Object.freeze()はObjectコンストラクターのメソッドです。
オブジェクトを凍結します。
具体的には、オブジェクトへのプロパティ追加を禁止し、既存プロパティのConfigurableおよびWritable属性にfalseをセットします。
これにより、値および属性の変更ができなくなります。
※セッターとゲッターはWritable属性が存在しないため、Configurableのみ変更されます。
※属性についてはObject.defineProperty()を参照してください。
プロパティ値がオブジェクトの場合、下階層のオブジェクトは凍結されません。
■構文
Object.freeze ( O )
- O: 対象オブジェクト
オブジェクトの保護を目的とするため、一度凍結したオブジェクトを元に戻す方法はありません。
■使用例
const obj = {
prop:200,
text:"hello",
};
Object.freeze( obj );
obj.prop = 400; // プロパティ値の変更
obj.prop2 = 300; // プロパティ追加
console.log( obj ); // { prop: 200, text: 'hello' }
※strictモード時は、プロパティ値の変更およびプロパティ追加でTypeErrorが発生します。
▶ 階層のあるオブジェクト
const obj = {
prop:200,
obj:{
prop:100
}
};
Object.freeze( obj );
obj.obj.prop = 300;
console.log( obj.obj.prop ); // 300 凍結されていない!
Object.freeze( obj.obj );
obj.obj.prop = 400;
console.log( obj.obj.prop ); // 300 凍結された!
関連ページ
更新日:2024/06/14
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。