🙌
可変オブジェクトと不変オブジェクト
【概要】
オブジェクトには可変オブジェクトと不変オブジェクトがある
可変オブジェクト(mutable object):オブジェクト自体に変更を加えることができる
不変オブジェクト(immutable object):オブジェクト自体に変更を加えることができない
【不変オブジェクトについて】
不変オブジェクトの一つである、JavaScriptの文字列オブジェクトを例とする
JavaScriptの文字列は不変です。つまり、一度文字列が作成されると、それを変更することはできません。文字列メソッドは、現在の文字列の内容に基づいて新しい文字列を作成します。
不変オブジェクトの場合、値自体は変更されない
戻り値として新たなインスタンスが生成される
文字列オブジェクトs自体が変換されることはなく、
戻り値である新たなインスタンスnewStringが生成される
【補足】
文字列(不変オブジェクト)を変更したように見せたい場合、以下のようなやり方がある
- 文字列を元に配列(可変オブジェクト)を新たに生成
- 配列の状態を変更(可変オブジェクトなので変更可能)
- 配列を元に文字列を生成
【参考】
Discussion