Dokumentacja języka JavaScript 1.5:Obiekty:Object:toString
z Mozilla Developer Center, polskiego centrum programistów Mozilli.
Spis treści |
[edytuj] Podsumowanie
Zwraca łańcuch znaków reprezentujący dany obiekt.
| Metoda obiektu: Object | |
| Zaimplementowana w: | JavaScript 1.0 |
| Wersja ECMA | ECMA-262 |
[edytuj] Składnia
toString()
[edytuj] 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]"
[edytuj] 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.
[edytuj] 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()
[edytuj] Zgodność wsteczna
[edytuj] JavaScript 1.2
Zachowanie metody toString zależy od tego, czy w znaczniku <SCRIPT> znajdzie się atrybut LANGUAGE="JavaScript1.2":
- Jeśli znacznik
<SCRIPT>zawieraLANGUAGE="JavaScript1.2", metodatoStringzwraca literał obiektowy.
- Jeśli znacznik
<SCRIPT>nie zawieraLANGUAGE="JavaScript1.2", metodatoStringzwróci[object typ], jak w innych wersjach JavaScriptu.
[edytuj] Przykłady
[edytuj] 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
[edytuj] 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]
[edytuj] 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