【JavaScript ECMAScript】Object::Object.isExtensible静的メソッドの使い方
Object.isExtensible()静的メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Object.isExtensible()メソッドは、特定のオブジェクトが「拡張可能」であるかどうかを判定するために使用されるメソッドです。ここでいう拡張可能とは、そのオブジェクトに後から新しいプロパティ(キーと値のペア)を追加できる状態を指します。
このメソッドは、引数として検証したいオブジェクトを受け取り、そのオブジェクトが新しいプロパティの追加を許可しているかどうかを真偽値で返します。JavaScriptにおいて、新しく作成されたオブジェクトのほとんどはデフォルトで拡張可能ですので、特別な操作をしない限り、Object.isExtensible()はtrueを返します。
しかし、Object.preventExtensions()、Object.seal()、またはObject.freeze()といった組み込みメソッドがオブジェクトに適用された場合、そのオブジェクトは拡張不可能になります。これらのメソッドが適用されたオブジェクトに対してObject.isExtensible()を実行すると、falseが返されます。特に、Object.preventExtensions()は新しいプロパティの追加のみを禁止しますが、既存のプロパティの値の変更や削除は引き続き可能です。Object.seal()やObject.freeze()はさらに厳しい制限を設けます。
この機能は、オブジェクトの構造が意図せず変更されてしまうことを防ぎたい場合や、セキュリティの観点からオブジェクトの不変性を確保したい場合などに非常に有効です。例えば、重要な設定オブジェクトの構造を固定し、実行中に誤ってプロパティが追加されるのを防ぐといった用途で活用できます。戻り値は、オブジェクトが拡張可能であればtrue、拡張不可能であればfalseです。
構文(syntax)
1const myObject = {}; 2console.log(Object.isExtensible(myObject)); 3 4Object.preventExtensions(myObject); 5console.log(Object.isExtensible(myObject));
引数(parameters)
obj
- obj: object: 拡張可能かどうかを調べたいオブジェクト
戻り値(return)
Boolean
指定されたオブジェクトがプロパティの追加を許可するかどうかを示す真偽値を返します。