Kan du tilføje en egenskab til en streng?
vigtighed: 5
Forestil dig følgende kode:
let str = "Hej";
str.test = 5;
alert(str.test);
Hvad tror du, vil det virke? Hvad vil blive vist?
Prøv at køre det:
let str = "Hej";
str.test = 5; // (*)
alert(str.test);
Afhængigt af om du har use strict eller ej, kan resultatet være:
undefined(ingen strict mode)- En fejl (strict mode).
Hvorfor? Lad os gennemgå, hvad der sker på linje (*):
- Når en egenskab af
strtilgås, oprettes der et “wrapper-objekt”. - I strict mode er det en fejl at skrive til det.
- Ellers fortsætter operationen med egenskaben, objektet får
test-egenskaben, men efterfølgende forsvinder “wrapper-objektet”, så i den sidste linje harstringen spor af egenskaben.
Dette eksempel viser tydeligt, at primitivtyper ikke er objekter.
De kan ikke gemme yderligere data.