Object.prototype.constructor

Resumen

Retorna una referencia a la función del Object que creó el prototipo 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 solo de lectura para valores de primitivas tales como 1, true y 'test'.

Descripción

Todos los objetos heredan una propiedad constructor la cual proviene de su prototipo:

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 creo 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

Contributors to this page: hugoleon46, teoli, chebit, carlosmantilla
Última actualización por: hugoleon46,
Ocultar la barra lateral