1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
---
title: Object.prototype.toSource()
slug: Web/JavaScript/Reference/Global_Objects/Object/toSource
tags:
- JavaScript
- Method
- Non-standard
- Não padronizado
- Object
- Objeto
- Obsoleto
- Prototipo
- Prototype
- metodo
translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource
---
<div>{{JSRef}} {{obsolete_header}}</div>
<p>O método <strong><code>toSource()</code></strong> retorna uma cadeia de caracteres (<em>string</em>) representando o código fonte do objeto.</p>
<h2 id="Sintaxe">Sintaxe</h2>
<pre class="syntaxbox notranslate"><code>Object.toSource();
<var>obj</var>.toSource();
</code></pre>
<h3 id="Valor_de_retorno">Valor de retorno</h3>
<p>Uma <em>string</em> representando o código fonte do objeto.</p>
<h2 id="Descrição">Descrição</h2>
<p>O método <code>toSource()</code> retorna os seguintes valores:</p>
<ul>
<li>Para o objeto embutido {{jsxref("Object")}}, <code>toSource()</code> retorna a seguinte <em>string</em> indicando que o código fonte não está disponível:
<pre class="brush: js notranslate">function Object() {
[native code]
}
</pre>
</li>
<li>Para instâncias de {{jsxref("Object")}}, <code>toSource()</code> returna a <em>string</em> representando o código fonte.</li>
</ul>
<p>Você pode chamar <code>toSource()</code> enquanto debuga para examinar os conteúdos de um objeto.</p>
<h3 id="Sobrescrevendo_o_método_toSource">Sobrescrevendo o método <code>toSource()</code></h3>
<p>É seguro para objetos sobrescreverem o método <code>toSource()</code>. Por exemplo:</p>
<pre class="brush: js notranslate">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")
</pre>
<h3 id="Métodos_toSource_embutidos">Métodos <code>toSource()</code> embutidos</h3>
<p>Cada tipo principal do JavaScript tem seu próprio método <code>toSource()</code>. Esses objetos são:</p>
<ul>
<li>{{jsxref("Array.prototype.toSource()")}} — objeto {{jsxref("Array")}}.</li>
<li>{{jsxref("Boolean.prototype.toSource()")}} — objeto {{jsxref("Boolean")}}.</li>
<li>{{jsxref("Date.prototype.toSource()")}} — objeto {{jsxref("Date")}}.</li>
<li>{{jsxref("Function.prototype.toSource()")}} — objeto {{jsxref("Function")}}.</li>
<li>{{jsxref("Number.prototype.toSource()")}} — objeto {{jsxref("Number")}}.</li>
<li>{{jsxref("RegExp.prototype.toSource()")}} — objeto {{jsxref("RegExp")}}.</li>
<li>{{jsxref("String.prototype.toSource()")}} — objeto {{jsxref("String")}}.</li>
<li>{{jsxref("Symbol.prototype.toSource()")}} — objeto {{jsxref("Symbol")}}.</li>
<li><code>Math.toSource()</code> — Retorna a <em>string</em> "Math".</li>
</ul>
<h3 id="Limitações_em_objetos_cíclicos">Limitações em objetos cíclicos</h3>
<p>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, <code>toSource()</code> não irá recriar a auto-referência, como no Firefox 24. Por exemplo:</p>
<pre class="brush: js notranslate">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));
</pre>
<p>Se uma estrutura cíclica é empregada e <code>toSource()</code> é necessário, o objeto deve prover uma sobrescrita para <code>toSource()</code>, ou usando a referência para um construtor ou provendo uma função anônima.</p>
<h2 id="Exemplos">Exemplos</h2>
<h3 id="Usando_toSource">Usando <code>toSource()</code></h3>
<p>O seguinte código define o tipo do objeto <code>Dog</code> e cria <code>theDog</code>, um objeto do tipo <code>Dog</code>:</p>
<pre class="brush: js notranslate">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');
</pre>
<p>Chamando o método <code>toSource()</code> de <code>theDog</code> mostra o código fonte JavaScript que define o objeto:</p>
<pre class="brush: js notranslate">theDog.toSource();
// returns ({name:"Gabby", breed:"Lab", color:"chocolate", sex:"female"})
</pre>
<h2 id="Especificações">Especificações</h2>
<p>Não faz parte de nenhum padrão.</p>
<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2>
<div>
<div class="hidden">A tabela de compatibilidade nessa página é gerada de dados estruturados. Se você quiser contribuir a esses dados, por favor cheque <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data </a>e nos mande um pull request.</div>
<p>{{Compat("javascript.builtins.Object.toSource")}}</p>
</div>
<h2 id="Veja_também">Veja também</h2>
<ul>
<li>{{jsxref("Object.prototype.toString()")}}</li>
</ul>
|