ÃzelliÄe karakter dizisi eklenebilir mi?
AÅaÄıdaki koda göre:
let str = "Merhaba";
str.test = 5;
alert(str.test);
ÃalıÅır mı? ÃalıÅırsa ekranda ne gösterilir?
ÃalıÅtırmayı deneyin:
let str = "Merhaba";
str.test = 5; // (*)
alert(str.test);
İki türlü cevap verilebilir:
undefined- Hata
Neden? Ne olduÄuna (*) satırından bakarsanız:
strnin bir özelliÄine eriÅildiÄinde, âobje kabıâ yaratılır.- Bundan dolayı obje
testözelliÄini alır. - âobje kabıâ kaybolur ve iÅlem tamamlanır.
Ãyleyse str nin son satırında özelliÄe ait hiçbir iz yoktur. İlkel tipin üzerinde yapılan deÄiÅiklik için yeni obje kabı üretilir.
Bazı tarayıcılar ilkel tiplere yeni özellik tanımlanmasına izin vermezler. Bundan dolayı (*) bölümünde undefined deÄil de hata da görebilirsiniz. Bu aslında özelliklerin dıÅında bir uygulamadır.
Bu örnekten de gördüÄünüz gibi ilkel tipler kesinlikle obje deÄillerdir.
Geçici metodlar oluÅturarak obje gibi davranırlar. Yukarıdaki örnekte olduÄu gibi bunları fazla tutamazlar.