Object.prototype.toSource()

Obsolete
This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

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:
    function Object() {
        [native code]
    }
    
  • Para instâncias de Object, toSource() returna 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:

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.

Compatibilidade de navegador

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
toSource
DeprecatedNon-standard
Chrome No support NoEdge No support NoFirefox No support 1 — 74
Notes
No support 1 — 74
Notes
Notes Starting in Firefox 74, toSource() is no longer available for use by web content. It is still allowed for internal and privileged code.
IE No support NoOpera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android Full support 4Opera Android No support NoSafari iOS No support NoSamsung Internet Android No support Nonodejs No support No

Legend

Full support  
Full support
No support  
No support
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.
See implementation notes.
See implementation notes.

Veja também