🙌

可変オブジェクトと不変オブジェクト

2024/10/13に公開

【概要】

オブジェクトには可変オブジェクトと不変オブジェクトがある

可変オブジェクト(mutable object):オブジェクト自体に変更を加えることができる
不変オブジェクト(immutable object):オブジェクト自体に変更を加えることができない

【不変オブジェクトについて】

不変オブジェクトの一つである、JavaScriptの文字列オブジェクトを例とする

JavaScriptの文字列は不変です。つまり、一度文字列が作成されると、それを変更することはできません。文字列メソッドは、現在の文字列の内容に基づいて新しい文字列を作成します。

不変オブジェクトの場合、値自体は変更されない

戻り値として新たなインスタンスが生成される

文字列オブジェクトs自体が変換されることはなく、
戻り値である新たなインスタンスnewStringが生成される

【補足】

文字列(不変オブジェクト)を変更したように見せたい場合、以下のようなやり方がある

  1. 文字列を元に配列(可変オブジェクト)を新たに生成
  2. 配列の状態を変更(可変オブジェクトなので変更可能)
  3. 配列を元に文字列を生成

【参考】

https://developer.mozilla.org/ja/docs/Web/JavaScript/Data_structures#文字列型

Discussion