Object.prototype.constructor
BaselineWidely 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çãoObject
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 é apenasread-only para valores primitivos como1
,true
e"test"
.
Descrição
Todos os objetos herdam a propriedadeconstrutor de seu protótipo:
var o = {};o.constructor === Object; // truevar a = [];a.constructor === Array; // truevar 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 propriedadeconstructor do objetotheTree
.
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:
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. Apenastrue
,1
e"test"
não serão afetados sendo que eles temconstrutores
read-only nativos. Esse exemplo apresenta que nem sempre é seguro depender da propriedadeconstructor
de um objeto.
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:
function Type() {},false,function Type() {},false,function Type() {},false,falsefunction Boolean() { [native code]},false,truefunction Type() {},false,Mon Sep 01 2014 16:03:49 GMT+0600function Type() {},false,Errorfunction Type() {},false,function anonymous() {}function Type() {},false,function () {}function Type() {},false,[object Math]function Type() {},false,0function Number() { [native code]},false,1function 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® 2026 Language Specification # sec-object.prototype.constructor |