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.
Сводка
Возвращает ссылку на функциюObject
, создавшую прототип экземпляра. Обратите внимание, что значение этого свойства является ссылкой на саму функцию, а не строкой, содержащей имя функции. Для примитивных значений, вроде1
,true
или"test"
, значение доступно только для чтения.
Описание
Все объекты наследуют свойствоconstructor
из своего прототипа:
var o = {};o.constructor === Object; // truevar a = [];a.constructor === Array; // truevar 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,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,тест
Спецификации
Specification |
---|
ECMAScript® 2026 Language Specification # sec-object.prototype.constructor |