toString

Podsumowanie

Zwraca łańcuch znaków reprezentujący dany obiekt.

Metoda obiektu: Object
Zaimplementowana w: JavaScript 1.0
Wersja ECMA ECMA-262

Składnia

toString()

Opis

Każdy obiekt posiada metodę toString, która jest wywoływana automatycznie, kiedy obiekt ma zostać przedstawiony jako wartość tekstowa, albo kiedy obiekt jest dołączany do ciągu znakowego. Poniższe przykłady wymagają, by jakisPies był reprezentowany jako łańcuch znaków:

document.write(jakisPies)
document.write("jakisPies to " + jakisPies)

Domyślnie metoda toString jest dziedziczona przez każdy obiekt wyprowadzony z obiektu Object. Można przesłonić tę metodę dla własnych obiektów. Jeśli toString nie zostanie przesłonięta we własnych obiektach użytkownika, zwróci ona [object typ], gdzie typ jest typem obiektu lub nazwą funkcji konstruktora, która utworzyła ten obiekt.

Na przykład:

var o = new Object()
o.toString() // zwraca "[object Object]"

Wbudowane metody toString

Każdy obiekt wbudowany z jądra JavaScriptu przesłania metodę toString, by zwracała właściwą wartość. JavaScript wywołuje tę metodę za każdym razem, kiedy zachodzi potrzeba przekonwertowania obiektu na łańcuch znaków.

Przesłanianie domyślnej metody toString

Można utworzyć funkcję, która będzie wywoływana zamiast domyślnej metody toString. Metoda toString nie pobiera żadnych argumentów i powinna zwrócić łańcuch znaków. Utworzona przez użytkownika metoda toString może zwracać dowolną wartość, ale najlepiej, by przekazywała użyteczne informacje na temat obiektu.

Poniższy kod definiuje typ obiektowy Pies i tworzy obiekt jakisPies typu Pies:

function Pies(nazwa,rasa,wiek,plec) {
   this.nazwa=nazwa
   this.rasa=rasa
   this.wiek=wiek
   this.plec=plec
}

jakisPies = new Pies("Szarik","owczarek niemiecki","5","samiec")

Jeśli wywołana zostanie metoda toString tego obiektu, zwrócona zostanie domyślna wartość odziedziczona po Object:

jakisPies.toString() // zwraca [object Object]

Poniższy kod tworzy funkcję piesToString, która to funkcja będzie przesłaniać domyślną metodę toString. Funkcja ta tworzy łańcuch znaków zawierający każdą własność; budowany łańcuch będzie postaci "własność = wartość;".

function piesToString() {
   var ret = "Pies " + this.nazwa + " to: [\n"
   for (var prop in this)
      ret += " " + prop + " = " + this[prop] + ";\n"
   return ret + "]"
}

Poniższy kod przypisuje zdefiniowaną powyżej funkcję do metody toString obiektów typu obiektowego Pies:

Pies.prototype.toString = piesToString

Dzięki powyższemu kodowi za każdym razem, kiedy jakisPies używany jest w kontekście łańcucha znaków, interpreter JavaScriptu automatycznie wywołuje funkcję piesToString, która zwraca poniższy łańcuch:

Pies Szarik to: [
  nazwa = Szarik;
  rasa = owczarek niemiecki;
  wiek = 5;
  plec = samiec;
]

Metoda toString danego obiektu jest zazwyczaj wywoływana przez interpreter JavaScriptu, ale można ją wywołać samodzielnie, jak poniżej:

var piesString = jakisPies.toString()

Zgodność wsteczna

JavaScript 1.2

Zachowanie metody toString zależy od tego, czy w znaczniku <SCRIPT> znajdzie się atrybut LANGUAGE="JavaScript1.2":

  • Jeśli znacznik <SCRIPT> zawiera LANGUAGE="JavaScript1.2", metoda toString zwraca literał obiektowy.
  • Jeśli znacznik <SCRIPT> nie zawiera LANGUAGE="JavaScript1.2", metoda toString zwróci [object typ], jak w innych wersjach JavaScriptu.

Przykłady

Przykład: Obiekt location

Poniższy przykład wypisuje łańcuch znaków odpowiadający aktualnemu adresowi.

document.write("location.toString() to " + location.toString() + "<br />")

Wynik:

location.toString() to file:///C|/TEMP/myprog.html

Przykład: Obiekt bez wartości tekstowej

Załóżmy, że mamy obiekt typu Image, nazwany sealife, zdefiniowany w języku HTML następująco:

<img name="sealife" src="images\seaotter.gif" align="left" vspace="10">

Ponieważ obiekt Image nie ma własnej metody toString, sealife.toString() zwróci:

[object Image]

Przykład: Parametry pierwiastka

Poniższy przykład wypisuje tekstowe odpowiedniki liczb od 0 do 9 w notacji dziesiątkowej i dwójkowej:

for (x = 0; x < 10; x++) {
   document.write("Dziesiętnie: ", x.toString(10), " Dwójkowo: ",
      x.toString(2), "<BR>")
}

Wynik działania powyższego skryptu:

Dziesiętnie: 0 Dwójkowo: 0
Dziesiętnie: 1 Dwójkowo: 1
Dziesiętnie: 2 Dwójkowo: 10
Dziesiętnie: 3 Dwójkowo: 11
Dziesiętnie: 4 Dwójkowo: 100
Dziesiętnie: 5 Dwójkowo: 101
Dziesiętnie: 6 Dwójkowo: 110
Dziesiętnie: 7 Dwójkowo: 111
Dziesiętnie: 8 Dwójkowo: 1000
Dziesiętnie: 9 Dwójkowo: 1001

Zobacz także

toSource, valueOf


Autorzy i etykiety dokumentu

Autorzy tej strony: Ptak82, Marcoos, Mgjbot
Ostatnia aktualizacja: Mgjbot,