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 julho de 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:
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
.
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. 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.
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,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® 2026 Language Specification> # sec-object.prototype.constructor> |
Compatibilidade de Browser
Loading…