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
|
---
title: Object.prototype.toSource()
slug: Web/JavaScript/Referencia/Objetos_globales/Object/toSource
translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource
---
<div>{{JSRef}} {{non-standard_header}}</div>
<p>El método <strong><code>toSource()</code></strong> regresa una cadena representando el código fuente del objeto.</p>
<h2 id="Syntax">Syntax</h2>
<pre class="syntaxbox"><code>Object.toSource();
<var>obj</var>.toSource();
</code></pre>
<h3 id="Return_value">Return value</h3>
<p>Una cadena representando el código fuente del objeto.</p>
<h2 id="Description">Description</h2>
<p>EL método <code>toSource()</code> regresa los siguientes valores:</p>
<ul>
<li>Para el objeto incorporado {{jsxref("Object")}}, <code>toSource()</code> regresa la siguiente cadena indicando que el código fuente no está disponible:
<pre class="brush: js">function Object() {
[native code]
}
</pre>
</li>
<li>Para instancias de {{jsxref("Object")}}, <code>toSource()</code> regresa una cadena representando el código fuente.</li>
</ul>
<p>Puedes llamar el método <code>toSource()</code> durante el depurado para examinar el contenido de un objeto.</p>
<h3 id="Sobreescribir_el_método_toSource()"><code><font face="x-locale-heading-primary, zillaslab, Palatino, Palatino Linotype, x-locale-heading-secondary, serif"><span style="background-color: #333333;">Sobreescribir el método </span></font>toSource()</code></h3>
<p>Es seguro para los objetos sobreescribir el método <strong>toSource()</strong><strong>.</strong> Por ejemplo:</p>
<pre class="brush: js">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")
</pre>
<h3 id="Métodos_de_toSource()_incorporados">Métodos de <code>toSource()</code> incorporados</h3>
<p>Cada tipo fundamental de JavaScript tiene su propio método <code>toSource()</code>. Éstos objetos son:</p>
<ul>
<li>{{jsxref("Array.prototype.toSource()")}} {{non-standard_inline}} — {{jsxref("Array")}} object.</li>
<li>{{jsxref("Boolean.prototype.toSource()")}} {{non-standard_inline}} — {{jsxref("Boolean")}} object.</li>
<li>{{jsxref("Date.prototype.toSource()")}} {{non-standard_inline}} — {{jsxref("Date")}} object.</li>
<li>{{jsxref("Function.prototype.toSource()")}} {{non-standard_inline}} — {{jsxref("Function")}} object.</li>
<li>{{jsxref("Number.prototype.toSource()")}} {{non-standard_inline}} — {{jsxref("Number")}} object.</li>
<li>{{jsxref("RegExp.prototype.toSource()")}} {{non-standard_inline}} — {{jsxref("RegExp")}} object.</li>
<li>{{jsxref("SIMD.toSource()", "SIMD.%type%.prototype.toSource()")}} {{non-standard_inline}} — {{jsxref("SIMD")}} objects.</li>
<li>{{jsxref("String.prototype.toSource()")}} {{non-standard_inline}} — {{jsxref("String")}} object.</li>
<li>{{jsxref("Symbol.prototype.toSource()")}} {{non-standard_inline}} — {{jsxref("Symbol")}} object.</li>
<li><code>Math.toSource()</code> — Regrsa la cadena "Math".</li>
</ul>
<h3 id="Limitaciones_en_objetos_cíclicos">Limitaciones en objetos cíclicos</h3>
<p>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, <code>toSource()</code> no recreará la referencia a sí mismo, a partir de Firefox 24. Por ejemplo:</p>
<pre class="brush: js">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));
</pre>
<p>Si una estructura cíclica es usada y se necesita el método <code>toSource()</code>, el objeto debe proveer la sobreescritura de <code>toSource()</code>, ya sea usando una referencia a un constructor o proveyendo una función anónima.</p>
<h2 id="Ejemplos">Ejemplos</h2>
<h3 id="Usando_toSource()">Usando <code>toSource()</code></h3>
<p>El código siguiente define el objeto tipo <code>Dog</code> y crea a <code>theDog</code>, un objeto tipo <code>Dog</code>:</p>
<pre class="brush: js">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>Llamando al método <code>toSource() de</code> <code>theDog</code> muestra el código JavaScript que define al objeto:</p>
<pre class="brush: js">theDog.toSource();
// returns ({name:"Gabby", breed:"Lab", color:"chocolate", sex:"female"})
</pre>
<h2 id="Especificaciones">Especificaciones</h2>
<p>No es parte de ningún estándar. Implementado en JavaScript 1.3.</p>
<h2 id="Compatibilidad_en_navegadores">Compatibilidad en navegadores</h2>
<div>
<p>{{Compat("javascript.builtins.Object.toSource")}}</p>
</div>
<h2 id="Ver_también">Ver también</h2>
<ul>
<li>{{jsxref("Object.prototype.toString()")}}</li>
</ul>
|