Kein Standard
Diese Funktion entspricht nicht dem Standard und ist nicht Teil der Standardisierung. Diese Funktion darf nicht in Webseiten, die via das Internet zugänglich sind, benutzt werden: Sie wird nicht für alle Nutzer funktionieren. Es kann zu umfangreichen Inkompatibilitäten zwischen verschiedenen Implementierungen kommen und die Funktionsweise oder Eigenschaften könnten in der Zukunft verändert werden.
Die toSource()
Methode liefert einen String der den Quellcode des Objekts representiert.
Object.toSource();
obj.toSource();
Zurückgelieferter Wert
Ein String der den Quellcode des Objekts representiert.
Beschreibung
Die toSource()
Methode liefer die folgenden Werte:
Für das eingebaute Object
Objekt, liefert toSource() den folgenden String, welcher angibt, dass der Quellcode nicht verfügbar ist.
-
function Object() { [native code] }
- Für instanzen von
Object
, lieferttoSource()
einen String der den Sourcecode representiert.
toSource()
kann während der Entwicklung aufgerufen werden um die Inhalte eines Objekts zu inspizieren.
Überschreiben der toSource() Methode
Es ist sicher die toSource() Methode zu überschreiben. Zum Beispiel:
function Person(name) {
this.name = name;
}
Person.prototype.toSource = function Person_toSource() {
return 'new Person(' + uneval(this.name) + ')';
};
console.log(new Person('Joe').toSource()); // ---> new Person("Joe")
Eingebaute toSource() Methoden
Jeder Kern-JavaScript Typ hat seine eigene toSource()
Methode. Diese sind:
Array.prototype.toSource()
—Array
Objekt.Boolean.prototype.toSource()
—Boolean
Objekt.Date.prototype.toSource()
—Date
Objekt.Function.prototype.toSource()
—Function
Objekt.Number.prototype.toSource()
—Number
Objekt.RegExp.prototype.toSource()
—RegExp
Objekt.SIMD.%type%.prototype.toSource()
—SIMD
Objekt.String.prototype.toSource()
—String
Objekt.Symbol.prototype.toSource()
—Symbol
Objekt.Math.toSource()
— Liefert den String "Math".
Limits bei zyklischen Objekten
Im Falle, dass Objekte auf sich selbst referenzieren, z.B.: eine zyklisch verbundene Liste oder ein Baum der beide wege durchquert, erstellt toSource()
nicht eine neue Selbst-Referenz. Dies passiert seit Firefox 24. Zum Beispiel:
var obj1 = {};
var obj2 = { a: obj1 };
obj1.b = obj2;
console.log('Cyclical: ' + (obj1.b.a == obj1));
var objSource = obj1.toSource(); // returns "({b:{a:{}}})"
obj1 = eval(objSource);
console.log('Cyclical: ' + (obj1.b.a == obj1));
Wenn eine zyklische Struktur existiert und toSource()
benötigt wird, muss das Objekt eine überschriebene toSource() Methode besitzen. Entweder durch benützen einer Referenz zum Construktor oder einer anonymen Funktion.
Beispiele
Benutzen von toSource()
Der folgende Code defniert den "Dog" Objekt Typ und kreiert "theDog", welches ein Objekt des Typs "Dog" ist:
function Dog(name, breed, color, sex) {
this.name = name;
this.breed = breed;
this.color = color;
this.sex = sex;
}
theDog = new Dog('Gabby', 'Lab', 'chocolate', 'female');
Durch aufrufen der toSource()
Methode von "theDog"
liefert die JavaScript Quelle, welche das Objekt definiert.
theDog.toSource();
// returns ({name:"Gabby", breed:"Lab", color:"chocolate", sex:"female"})
Spezifikationen
Kein Teil eines Standards. Implementiert seit JavaScript 1.3.
Browser Kompatibilität
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | Nicht unterstützt | (Ja) | ? | ? | ? |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | ? | ? | (Ja) | ? | ? | ? |