#javascript #webdev Dlaczego: var a = "string"; console.log("length" in a); Zwraca error var a = new String("string"); console.log("length" in a); Zwraca true.
Jedno i drugie to obiekt a mimo to string bez użycia konstruktora nie posiada własności lenght.
@AsYlum JavaScript automatically converts primitives to String objects , so that it's possible to use String object methods for primitive strings. Dalej nie wiem czemu to nie działa. Jeśli prymitywny string nie byłby obiektem niemożliwe byłoby dotarcie do jego wartości length.
Tylko tutaj używasz 'in'. Dla przykładu: a.length zadziała na primitive type i odbędzie się automatyczna konwersja. I o tym mówi fragment który zacytowałeś. Podejrzewam, że "in" działa tylko na obiektach i nie zapewnia on żadnej automatycznej konwersji.
chyba sobie w tym wyczekiwanym urlopie tegorocznym w październiku polecę na Sri Lankę EDIT: nawet mają tam słoniki, sierociniec słoników jest. Dobra chyba klikam.
Dlaczego:
var a = "string";
console.log("length" in a);
Zwraca error
var a = new String("string");
console.log("length" in a);
Zwraca true.
Jedno i drugie to obiekt a mimo to string bez użycia konstruktora nie posiada własności lenght.
@Mtyrio: Nie. A przynajmniej nie w sensie JS. sprawdź sobie przez typeof
@OfensywnoOpresyjnyKorwinizmWAkcji
Zerknij na to czym jest zmienna a w obu przypadkach: console.log(typeof a);
Dalej nie wiem czemu to nie działa. Jeśli prymitywny string nie byłby obiektem niemożliwe byłoby dotarcie do jego wartości length.
@Mtyrio: Przeczytaj fragment który sam zacytowałeś
into operator. Metoda to np..charAt()@AsYlum
@OfensywnoOpresyjnyKorwinizmWAkcji
@epi
Trochę to bardziej skomplikowane niż myślałem ale już jest to jasne. W spojlerze jest odpowiedź, nie mogłem sherowac z stack exchange