--- title: Object.prototype.toSource() slug: Web/JavaScript/Reference/Global_Objects/Object/toSource translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource original_slug: Web/JavaScript/Referencia/Objetos_globales/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>