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.

Sumário

Retorna uma referência para a função Object que cria a instância do protótipo. Note que o valor desse protótipo é uma referência para a própria função, não uma string contendo o nome da função. O valor é apenas read-only para valores primitivos como 1, true e "test".

Descrição

Todos os objetos herdam a propriedade construtor de seu protótipo:

js
var o = {};
o.constructor === Object; // true

var a = [];
a.constructor === Array; // true

var n = new Number(3);
n.constructor === Number; // true

Exemplos

Exemplo: Apresentando o construtor de um objeto

O exemplo a seguir cria um protótipo, Tree, e um objeto desse tipo, theTree. O exemplo, então, apresenta a propriedade constructor do objeto theTree.

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

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

Esse exemplo apresenta a seguinte saída:

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

Exemplo: Mudando o construtor de um objeto

O exemplo a seguir apresenta como modificar o valor do construtor de um objeto genérico. Apenas true, 1 e "test" não serão afetados sendo que eles tem construtores read-only nativos. Esse exemplo apresenta que nem sempre é seguro depender da propriedade constructor de um objeto.

js
function Type() {}

var types = [
  new Array(),
  [],
  new Boolean(),
  true, // remains unchanged
  new Date(),
  new Error(),
  new Function(),
  function () {},
  Math,
  new Number(),
  1, // remains unchanged
  new Object(),
  {},
  new RegExp(),
  /(?:)/,
  new String(),
  "test", // remains unchanged
];

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"));

Esse exemplo apresenta a seguinte saída:

js
function Type() {},false,
function Type() {},false,
function Type() {},false,false
function Boolean() {
    [native code]
},false,true
function Type() {},false,Mon Sep 01 2014 16:03:49 GMT+0600
function Type() {},false,Error
function Type() {},false,function anonymous() {

}
function Type() {},false,function () {}
function Type() {},false,[object Math]
function Type() {},false,0
function Number() {
    [native code]
},false,1
function Type() {},false,[object Object]
function Type() {},false,[object Object]
function Type() {},false,/(?:)/
function Type() {},false,/(?:)/
function Type() {},false,
function String() {
    [native code]
},false,test

Especificações

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

Compatibilidade de Browser

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