Object.prototype.toSource()
O método toSource()
retorna uma cadeia de caracteres (string) representando o código fonte do objeto.
Sintaxe
Object.toSource(); obj.toSource();
Valor de retorno
Uma string representando o código fonte do objeto.
Descrição
O método toSource()
retorna os seguintes valores:
-
Para o objeto embutido
Object
,toSource()
retorna a seguinte string indicando que o código fonte não está disponível:jsfunction Object() { [native code] }
-
Para instâncias de
Object
,toSource()
retorna a string representando o código fonte.
Você pode chamar toSource()
enquanto debuga para examinar os conteúdos de um objeto.
Sobrescrevendo o método toSource()
É seguro para objetos sobrescreverem o método toSource()
. Por exemplo:
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")
Métodos toSource()
embutidos
Cada tipo principal do JavaScript tem seu próprio método toSource()
. Esses objetos são:
Array.prototype.toSource()
— objetoArray
.Boolean.prototype.toSource()
— objetoBoolean
.Date.prototype.toSource()
— objetoDate
.Function.prototype.toSource()
— objetoFunction
.Number.prototype.toSource()
— objetoNumber
.RegExp.prototype.toSource()
— objetoRegExp
.String.prototype.toSource()
— objetoString
.Symbol.prototype.toSource()
— objetoSymbol
.Math.toSource()
— Retorna a string "Math".
Limitações em objetos cíclicos
Em case de objetos que contém referências para eles mesmos, e.g. uma lista ligada cíclica ou uma árvore que pode ser percorrida pelos dois sentidos, toSource()
não irá recriar a auto-referência, como no Firefox 24. Por exemplo:
var obj1 = {};
var obj2 = { a: obj1 };
obj1.b = obj2;
console.log('Cyclical: ' + (obj1.b.a == obj1));
var objSource = obj1.toSource(); // retorna "({b:{a:{}}})"
obj1 = eval(objSource);
console.log('Cyclical: ' + (obj1.b.a == obj1));
Se uma estrutura cíclica é empregada e toSource()
é necessário, o objeto deve prover uma sobrescrita para toSource()
, ou usando a referência para um construtor ou provendo uma função anônima.
Exemplos
Usando toSource()
O seguinte código define o tipo do objeto Dog
e cria theDog
, um objeto do 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');
Chamando o método toSource()
de theDog
mostra o código fonte JavaScript que define o objeto:
theDog.toSource();
// returns ({name:"Gabby", breed:"Lab", color:"chocolate", sex:"female"})
Especificações
Não faz parte de nenhum padrão.