Immutable data dalam Javascript

Sastra Panca Nababan
Coderupa
Published in
2 min readJul 11, 2017

Secara sederhana Immutable artinya tidak bisa berubah sedangkan Mutable artinya bisa berubah.

Dalam Javascript, type data string, number adalah immutable. Sedangkan array dan object adalah mutable. Mari kita mulai percobaan sederhana, yaitu cloning dari sebuah variabel dan ganti valuenya

Contoh Cloning Variable String :

Pada contoh di atas kita membuat cloning dari variable string dan mengubah nilainya. So far good. Apakah metode ini juga berlaku di type data object dan array ?

Contoh Cloning Object :

Buumm kenapa object sumbernya jadi ikutan berubah ?

Karena javascript hanya mencopy referencenya saja tapi tidak dengan valuenya. Kedua object masih menggunakan space memori yang sama utuk valuenya. Jadi bagaimana solusinya ?

Immutable pada Object

Object Assign( ) adalah perintah untuk mencopy sebuah object ke object baru lengkap dengan reference dan valuenya. Dengan perintah ini target object baru tidak lagi menggunakan value yg sama dengan object lama

Syntax :

Object.assign(target, ...sources)

Solusi Cloning Object dengan Object Assign :

Pada Javascript ES6 ini bisa lebih simple lagi dengan menggunakan operator ( tiga titik). Berikut cara penggunaanya untuk cloning object.

Penggunaan Object Assign (es5) atau spread operator (es6) tidak berpengaruh pada performance dan hasil.

Immutable pada Array

Seperti object array juga termasuk mutable. Baik mari kita buat eksperiment sederhana, yaitu cloning dan menambah element array.

Untuk menambah element kita akan menggunakan perintah push( )

push( ) adalah perintah untuk menambah element ke dalam sebuah array

Syntax :

arr.push([element1[, ...[, elementN]]])

Contoh Mutable Cloning Array :

Dari contoh di atas ternyata perintah push adalah mutable.

Solusinya kita dapat menggunakan perintah concat( ). Concat adalah perintah untuk menggabung beberapa array, perintah ini tidak mengubah array sumber.

Syntax

var arrayBaru = arrayLama.concat(value1[, value2[, ...[, valueN]]])

Contoh Immutable Cloning Array :

Hampir sama seperti array anda juga bisa menggunakan spread operator es6

Contoh Immutable Cloning Array denga ES6 :

Kesimpulan

Immutable artinya Object yang telah dibuat tidak dapat dirubah (read only), satu-satunya cara merubahnya adalah dengan membuat object baru dan membuat perubahan di object baru tersebut.

Untuk Immutable Object gunakan perintah Object.assign( ) atau spread operator (…)

Untuk Immutable Array gunakan perintah concat( ) atau spread operator (…)

Bagaimana dengan performance ?

Bukankah dengan membuat object baru untuk setiap perubahan malah membebani memory ?

Umumnya tidak, kecuali mungkin aplikasi anda menggunakan jumlah element yang sangat besar. Untuk kondisi ini anda dapat menggunakan library immutable seperti immutable.js

Sekian dan Terimakasih,

--

--

Sastra Panca Nababan
Coderupa

Sharing is part of my DNA. I’ve always shared my knowledge, expertise, and passion with others.