Bisakah saya menambahkan properti string?
Perhatikan kode berikut:
let str = "Hello";
str.test = 5;
alert(str.test);
Bagaimana menurutmu, akankah itu bekerja? apa yang akan muncul?
Cobalah jalankan:
let str = "Hello";
str.test = 5; // (*)
alert(str.test);
Tergantung apakah kamu gunakan use strict
atau tidak, hasilnya mungkin bisa:
undefined
(bukan strict mode)- An error (strict mode).
Kenapa? Kita lihat apa yang terjadi apda baris (*)
:
- Ketika properti dari
str
di akses, sebuah ???objek pembungkus??? dibuat. - Didalam mode strict, menulis kedalamnya adalah sebuah error.
- Otherwise, the operation with the property is carried on, the object gets the
test
property, but after that the ???wrapper object??? disappears, so in the last linestr
has no trace of the property. - Sebaliknya, operasi dengan propertinya dibawa, objeknya mendapatkan properti
test
, tapi setelah itu ???objek pembungkus??? menghilang, jadi di baris terakhirstr
tidak mempunyai jejak dari properti itu.
Contoh ini dengan jelas membuktikan bahwa primitif bukanlah sebuah objek
Mereka tidak bisa menyimpan data tambahan.