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
Especificação | Status | Comentário |
---|---|---|
ECMAScript 1ª Edição. | Padrão | Definição inicial. Implementado no JavaScript 1.1. |
ECMAScript 5.1 (ECMA-262) The definition of 'Object.prototype.constructor' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Object.prototype.constructor' in that specification. |
Standard |
Compatibilidade de Browser
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suporte Básico | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suporte Básico | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |