Object.prototype.constructor

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

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.

js
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.

js
function Tree(name) {
  this.name = name;
}

var theTree = new Tree("Redwood");
console.log("theTree.constructor is " + theTree.constructor);

Este ejemplo muestra la siguiente salida:

js
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.

js
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® 2025 Language Specification
# sec-object.prototype.constructor

Compatibilidad con navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
constructor

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support