JavaScriptにおける定数オブジェクトの変更の特性と方法


  1. オブジェクトのプロパティの変更: 定数オブジェクト自体は変更できませんが、オブジェクトのプロパティは変更可能です。例えば、以下のような定数オブジェクトがあるとします:

    const person = {
     name: "John",
     age: 30
    };

    この場合、personオブジェクト自体は変更できませんが、プロパティの値は変更可能です:

    person.age = 40; // プロパティの変更
    console.log(person); // { name: "John", age: 40 }

    ただし、注意点として、オブジェクトのプロパティがオブジェクト自体を参照している場合、そのオブジェクト自体は変更できません。プロパティの値を変更することは可能ですが、新しいオブジェクトへの参照に変更することはできません。

  2. Object.freeze()によるオブジェクトの完全な凍結: JavaScriptには、Object.freeze()というメソッドがあります。これを使用すると、オブジェクトを完全に凍結して変更を禁止することができます。例えば:

    const person = {
     name: "John",
     age: 30
    };
    Object.freeze(person); // オブジェクトの凍結
    person.age = 40; // 変更は無視される
    console.log(person); // { name: "John", age: 30 }

    Object.freeze()を使用すると、オブジェクト自体とそのプロパティを変更不可にすることができます。

  3. Object.defineProperty()によるプロパティの定義: Object.defineProperty()メソッドを使用すると、オブジェクトのプロパティに対してカスタムの属性を定義することができます。これにより、プロパティの変更を制限することができます。

    const person = {};
    Object.defineProperty(person, "name", {
     value: "John",
     writable: false // 変更不可に設定
    });
    person.name = "Mike"; // 変更は無視される
    console.log(person.name); // "John"

    writable属性をfalseに設定することで、プロパティの変更を制限することができます。

これらはJavaScriptにおいて定数オブジェクトを変更するいくつかの方法です。定数オブジェクトを変更する際には、注意が必要です。適切な方法を選択し、コードの意図に合わせて定数オブジェクトを扱ってください。