Object.prototype.constructor

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

Specification
ECMAScript Language Specification
# sec-object.prototype.constructor

Compatibilidad con navegadores

BCD tables only load in the browser