JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptでオブジェクトが封印されているかどうかを確認する方法

JavaScriptでオブジェクトが「封印(シール)」されているかどうかを調べるには、Object.isSealed()メソッドを使用します。このメソッドは、オブジェクトの状態に応じて真偽値(boolean)を返します。

オブジェクトが封印されている条件

オブジェクトが封印されているとみなされるのは、以下の2つの条件がどちらも満たされている場合です。

  • オブジェクトが拡張不可能(extensibleではない)であること。つまり、新しいプロパティを追加できない状態になっていること。
  • すべてのプロパティが非コンフィギュラブル(non-configurable)であること。つまり、プロパティの削除や設定変更ができないこと。

ただし注意点として、封印されたオブジェクトでも既存プロパティの値自体は書き換え可能です。値まで変更できなくしたい場合は、Object.freeze()メソッドを使用してください。

構文

Object.isSealed(obj)

引数: Object.isSealed()はオブジェクトを1つ引数として受け取り、そのオブジェクトが封印されているかどうかに基づいて真偽値を返します。

使用例1:封印されていないオブジェクトの場合

次の例では、オブジェクトが封印されていないため、出力結果はfalseになります。オブジェクトを封印するには、「Object.seal()」というメソッドを使用する必要があります。

<html>
<body>
<script>
    var obj = {
       prop1: 2
    }
    var res = Object.isSealed(obj);
    document.write(res);
</script>
</body>
</html>

出力結果

false

使用例2:封印されたオブジェクトの場合

次の例では、オブジェクトobjを「Object.seal()」メソッドで封印しています。そのため、「Object.isSealed()」を実行すると、出力としてtrueが表示されます。

<html>
<body>
<script>
    var obj = {
       prop1: 2
    }
    Object.seal(obj);
    var res = Object.isSealed(obj);
    document.write(res);
</script>
</body>
</html>

出力結果

true

まとめ

Object.isSealed()を使えば、オブジェクトが拡張不可能であり、かつすべてのプロパティが非コンフィギュラブルであるかどうかを簡単に判定できます。オブジェクトの構造を意図しない変更から守りたい場合は、Object.seal()による封印と組み合わせて活用するとよいでしょう。

  1. JavaScriptでインポートしたオブジェクトを分割代入(デストラクチャリング)する方法

    JavaScriptでは、ESモジュールからインポートしたオブジェクトに対して分割代入(デストラクチャリング)を使うことで、必要なプロパティだけを個別の変数として簡潔に取り出すことができます。ここでは、import で読み込んだオブジェクトを分割代入する具体的な手順とコード例を紹介します。 ポイント:分割代入の基本構文 オブジェクトの分割代入は、次のように波括弧 { } の中に取り出したいプロパティ名を並べて記述します。let {プロパティ1, プロパティ2, プロパティ3} = オブジェクト;この構文は、インポートされたデフォルトエクスポートのオブジェクトにもそのまま適用できます。 コード例

  2. JavaScriptで多次元オブジェクトを作成する方法【サンプルコード付き】

    はじめに JavaScriptでは、オブジェクトのプロパティの値として別のオブジェクトを持たせることで、多次元(ネストされた)オブジェクトを作成できます。この構造を活用すると、氏名や学校情報、住所のように階層関係のあるデータを、直感的かつ整理された形で表現することが可能です。 サンプルコード 以下は、多次元JavaScriptオブジェクトを作成し、コンソールに表示するためのコード例です。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /