Resumen

Retorna una referencia a la función del 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'.

Descripción

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

Ejemplos

Ejemplo: Mostrando el constructor de un objeto.

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;
}

Ejemplo: Cambiando el constructor de un objeto.

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

Especificaciones Estatus Comentario
ECMAScript 1ra. Edición. Implementado en JavaScript 1.1 Estandar. Definición inicial.
ECMAScript 5.1 (ECMA-262)
The definition of 'Objectprototype.constructor' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.prototype.constructor' in that specification.
Standard  

Compatibilidad con Navegadores

Característica Chrome Firefox (Gecko) Internet Explorer Opera Safari
Soporte básico (Yes) (Yes) (Yes) (Yes) (Yes)
Característica Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Soporte básico (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

 

Etiquetas y colaboradores del documento

 Colaboradores en esta página: alejandrochung, hugoleon46, teoli, chebit, carlosmantilla
 Última actualización por: alejandrochung,