[JavaScript] Mutable vs Immutable Objects

Eric Deng
Nov 21, 2020

--

同步發佈於Medium及個人部落格

Photo by Adeolu Eletu on Unsplash

介紹JavaScript中很重要的觀念 Mutable 及 Immutable Objects,並以範例解釋他們的差別。

Immutable object

  • 所有的原始資料型態(primitive),包含 null, undefined, string, number, boolean, symbol, bigint,都是immutable。
  • immutable object是透過call by value的方式,會指向新分配的記憶體位置再存入值,因此object在建立之後就不可再被改變。
  • 當重新賦值時,會指向新分配的記憶體位置,而非直接改變記憶體裡的值,原本的記憶體位置會被garbage collection,換句話說他是被取代而不是直接被修改。

🌰 #1

🌰 #2

Mutable object

  • 除了primitive之外的object, array都是mutable。
  • mutable object是透過call by sharing的方式,共享同一個記憶體位置,因此object建立之後可再被改變。
  • 需要注意的是,當重新賦值時,仍會指向新分配的記憶體位置,結束原本的記憶體共享,因此原本的object不會被改變。

🌰 #1

🌰 #2

Reference:
https://developer.mozilla.org/en-US/docs/Glossary/Mutable
https://blog.techbridge.cc/2018/06/23/javascript-call-by-value-or-reference

--

--

Eric Deng
Eric Deng

Written by Eric Deng

Frontend Developer ❤️ coding, writing, sharing, javascript, web. Check out 👉 https://gcdeng.com/

No responses yet