Object.prototype.toSource()
No estándar: Esta característica no es parte de los estándares. No la uses en sitios Web en producción: no funcionará para todos los usuarios. Podrían haber también incompatibilidades considerables entre distintas implementaciones y el comportamiento podría cambiar en el futuro.
El método toSource()
regresa una cadena representando el código fuente del objeto.
Syntax
Object.toSource();
obj.toSource();
Return value
Una cadena representando el código fuente del objeto.
Description
EL método toSource()
regresa los siguientes valores:
- Para el objeto incorporado
Object
,toSource()
regresa la siguiente cadena indicando que el código fuente no está disponible:jsfunction Object() { [native code] }
- Para instancias de
Object
,toSource()
regresa una cadena representando el código fuente.
Puedes llamar el método toSource()
durante el depurado para examinar el contenido de un objeto.
Sobreescribir el método toSource()
Es seguro para los objetos sobreescribir el método toSource(). Por ejemplo:
function Person(name) {
this.name = name;
}
Person.prototype.toSource = function Person_toSource() {
return 'new Person(' + uneval(this.name) + ')';
};
console.log(new Person('Joe').toSource()); // ---> nueva Person("Joe")
Métodos de toSource()
incorporados
Cada tipo fundamental de JavaScript tiene su propio método toSource()
. Éstos objetos son:
Array.prototype.toSource()
Non-standard —Array
object.Boolean.prototype.toSource()
Non-standard —Boolean
object.Date.prototype.toSource()
Non-standard —Date
object.Function.prototype.toSource()
Non-standard —Function
object.Number.prototype.toSource()
Non-standard —Number
object.RegExp.prototype.toSource()
Non-standard —RegExp
object.SIMD.%type%.prototype.toSource()
Non-standard —SIMD
objects.String.prototype.toSource()
Non-standard —String
object.Symbol.prototype.toSource()
Non-standard —Symbol
object.Math.toSource()
— Regrsa la cadena "Math".
Limitaciones en objetos cíclicos
EN el caso de los objetos que contienen referencia a ellos mismos, por ejemplo, una lista enlazada cíclicamente o un árbol que puede ser atravesado en ambas formas, toSource()
no recreará la referencia a sí mismo, a partir de Firefox 24. Por ejemplo:
var obj1 = {};
var obj2 = { a: obj1 };
obj1.b = obj2;
console.log('Ciclico: ' + (obj1.b.a == obj1));
var objSource = obj1.toSource(); // regresa "({b:{a:{}}})"
obj1 = eval(objSource);
console.log('Ciclico: ' + (obj1.b.a == obj1));
Si una estructura cíclica es usada y se necesita el método toSource()
, el objeto debe proveer la sobreescritura de toSource()
, ya sea usando una referencia a un constructor o proveyendo una función anónima.
Ejemplos
Usando toSource()
El código siguiente define el objeto tipo Dog
y crea a theDog
, un objeto tipo Dog
:
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');
Llamando al método toSource()
de theDog
muestra el código JavaScript que define al objeto:
theDog.toSource();
// returns ({name:"Gabby", breed:"Lab", color:"chocolate", sex:"female"})