Переклад не закінчено. Будь ласка, допоможіть перекласти цю статтю з англійської.

Повертає посилання до функції Object що створює прототип екземпляру. Зауважте, що значення цієї властивості має будти посиланням до функції, а не строкою що містить ім'я функції.  Значення доступне лише для читання для примітивних значень як то   1true або "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 Latest Draft (ECMA-262)
The definition of 'Object.prototype.constructor' in that specification.
Draft  

Browser compatibility

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

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)

Мітки документа й учасники

Зробили внесок у цю сторінку: pushnov-i
Востаннє оновлена: pushnov-i,