Цей переклад в процесі.
Повертає посилання до функції Object
що створює прототип екземпляру. Зауважте, що значення цієї властивості має будти посиланням до функції, а не строкою що містить ім'я функції. Значення доступне лише для читання для примітивних значень як то 1
, true
або "test"
.
Опис
Всі об'екти успадковують значення (властивість) конструктору від їхнього прототипу:
var o = {}; o.constructor === Object; // true var a = []; a.constructor === Array; // true var n = new Number(3); n.constructor === Number; // true
Приклади
Відображення конструктора об'єкта
Наступний приклад створює прототип, Tree, та об'єкт цього типу, theTree. Приклад далі демонструє який конструктор матиме об'єкт theTree.
function Tree(name) { this.name = name; } var theTree = new Tree('Redwood'); console.log('theTree.constructor is ' + theTree.constructor);
Цей приклад в результаті покаже, що:
theTree.constructor is function Tree(name) { this.name = name; }
Зміна конструктора об'єкту
Наступний приклад покаже як можна змінити конструктор вбудванних об'єктів . Тільки true
, 1
та "test"
не змінять свого конструктору, оскілки їхні конструктори доступні лише для читання. Цей приклад демонструє, що не завжди безпечно опиратися на властивість конструктору об'єкту.
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'));
Цей приклад в результаті покаже, що:
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
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Найперше запровадження в 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 | |
ECMAScript 2017 Draft (ECMA-262) The definition of 'Object.prototype.constructor' in that specification. |
Draft |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |