Wpis z mikrobloga

#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.
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 0
@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.
  • Odpowiedz
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.
  • Odpowiedz
JavaScript automatically converts primitives to String objects , so that it's possible to use String object methods for primitive strings.


@Mtyrio: Przeczytaj fragment który sam zacytowałeś

so that it's possible to use String object methods for primitive strings.

in to operator. Metoda to np. .charAt()
  • Odpowiedz