JS: Разница между Object и Object.constructor
Я не понимаю разницу между Object и Object.constructor.
Давайте возьмем пример:
function Person() {}
var p = new Person();
Человек - это функция для создания объектов. Так:
p instanceof Person //true
p.constructor // Person
Person - это конструктор, и я могу создавать людей с новым Person()
Но Object также является конструктором (я могу создать объект с новым Object()). Итак, почему у Object есть свойство конструктора, поскольку он уже сам конструктор?
Спасибо
2 ответа
Так почему же у него есть свойство конструктора, поскольку он уже сам конструктор?
Потому что каждый конструктор является функцией, а те наследуют свои свойства (например, call
, apply
а также bind
методы) из Function.prototype
, В том числе Function.prototype.constructor
свойство, которое указывает на Function
,
constructor
это указатель на constructor function
используется для создания заданного значения, все объекты имеют его. Для примитивов это указывает на примитивный конструктор: Object
, Number
, Function
и так далее.
Документ: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor