--- title: Object.prototype.constructor slug: Web/JavaScript/Reference/Global_Objects/Object/constructor tags: - JavaScript - Object - Property - Prototype translation_of: Web/JavaScript/Reference/Global_Objects/Object/constructor original_slug: Web/JavaScript/Referencia/Objetos_globales/Object/constructor ---
Retorna una referencia a la función del {{jsxref("Object")}} que creó el objeto de la instancia. Note que el valor de esta propiedad es una referencia a la función misma, no a un string conteniendo el nombre de la función. El valor es sólo de lectura para valores primitivos tales como 1, true y 'test'.
Todos los objetos tienen una propiedad constructor.
Los objetos creados sin explicitar el uso de una función (como son los objetos y las cadenas literales) tendrán una propiedad de constructor
que apunta al tipo de constructor del Objeto Fundamento para ese objeto.
var o = {}; o.constructor === Object; // true var a = []; a.constructor === Array; // true var n = new Number(3); n.constructor === Number; // true
El siguiente ejemplo crea un prototipo, Tree
, y un objeto de este tipo, theTree
. El ejemplo muestra entonces la propiedad constructor
para el objeto theTree
.
function Tree (name) { this.name = name; } var theTree = new Tree( "Redwood" ); console.log( "theTree.constructor is " + theTree.constructor );
Este ejemplo muestra la siguiente salida:
theTree.constructor is function Tree (name) { this.name = name; }
El siguiente ejemplo demuestra como modificar el valor del constructor de objetos genéricos. Solo true
, 1
y "test"
no serán afectados ya que ellos tienen constructores nativos de solo lectura. Este ejemplo demuestra que no siempre es seguro confiar en la propiedad constructor de un objeto.
function Type () {} var types = [ new Array(), [], new Boolean(), true, // no cambia new Date(), new Error(), new Function(), function () {}, Math, new Number(), 1, // no cambia new Object(), {}, new RegExp(), /(?:)/, new String(), "test" // no cambia ]; for( var i = 0; i < types.length; i++ ) { types[i].constructor = Type; types[i] = [ types[i].constructor, types[i] instanceof Type, types[i].toString() ]; } console.log( types.join( "\n" ) );
Especificaciones | Estatus | Comentario |
---|---|---|
ECMAScript 1ra. Edición. Implementado en JavaScript 1.1 | Estandar. | Definición inicial. |
{{SpecName('ES5.1', '#sec-15.2.4.1', 'Objectprototype.constructor')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-object.prototype.constructor', 'Object.prototype.constructor')}} | {{Spec2('ES6')}} |