Mohu pÅidat vlastnost do ÅetÄzce?
důležitost: 5
Uvažujme následujÃcà kód:
let ÅetÄzec = "Ahoj";
ÅetÄzec.test = 5;
alert(ÅetÄzec.test);
Co myslÃte, bude to fungovat? Co se zobrazÃ?
Zkuste si to spustit:
let ÅetÄzec = "Ahoj";
ÅetÄzec.test = 5; // (*)
alert(ÅetÄzec.test);
Podle toho, zda máte use strict nebo ne, výsledek může být:
undefined(nestriktnà režim).- Chyba (striktnà režim).
ProÄ? PÅehrajme si, co se dÄje na Åádku (*):
- Když pÅistoupÃme k vlastnosti promÄnné
ÅetÄzec, vytvoÅà se âobalâ. - Ve striktnÃm režimu zápis do nÄj znamená chybu.
- V nestriktnÃm režimu bude operace s touto vlastnostà provedena, objekt zÃská vlastnost
test, ale poté âobalâ zmizÃ, takže na poslednÃm Åádku nemáÅetÄzecpo této vlastnosti ani stopu.
Tento pÅÃklad jednoznaÄnÄ dokazuje, že primitivy nejsou objekty.
Nelze do nich ukládat dalšà data.