Сводка
Возвращает ссылку на функцию Object
, создавшую прототип экземпляра. Обратите внимание, что значение этого свойства является ссылкой на саму функцию, а не строкой, содержащей имя функции. Для примитивных значений, вроде 1
, true
или "test"
, значение доступно только для чтения.
Описание
Все объекты наследуют свойство constructor
из своего прототипа:
var o = {}; o.constructor === Object; // true var a = []; a.constructor === Array; // true var n = new Number(3); n.constructor === Number; // true
Примеры
Пример: отображение конструктора объекта
В следующем примере создаётся прототип Tree
и объект этого типа theTree
. Затем в примере отображается свойство constructor
объекта theTree
.
function Tree(name) { this.name = name; } var theTree = new Tree("Красное дерево"); console.log("theTree.constructor равен " + theTree.constructor);
Вывод примера будет следующим:
theTree.constructor равен function Tree(name) { this.name = name; }
Пример: изменение конструктора объекта
Следующий пример показывает, как изменить конструктор значений общих объектов. Не затрагиваются только значения true
, 1
и "тест"
, поскольку они имеют родные конструкторы только для чтения. Этот пример показывает, что полагаться на свойство constructor
объекта не всегда безопасно.
function Type() {} var types = [ new Array(), [], new Boolean(), true, // останется неизменным new Date(), new Error(), new Function(), function() {}, Math, new Number(), 1, // останется неизменным new Object(), {}, new RegExp(), /(?:)/, new String(), 'тест' // останется неизменным ]; 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'));
Вывод примера будет следующим:
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,тест
Спецификации
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 1-е издание. | Стандарт | Изначальное определение. Реализовано в JavaScript 1.1. |
ECMAScript 5.1 (ECMA-262) Определение 'Object.prototype.constructor' в этой спецификации. |
Стандарт | |
ECMAScript 6 (ECMA-262) Определение 'Object.prototype.constructor' в этой спецификации. |
Кандидат в рекомендации |
Совместимость с браузерами
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) |
Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |