Прототип объекта

383
03 октября 2017, 07:14

возьму цитату из учебника Кантора

При выполнении new Object, создаваемому объекту ставится proto по prototype конструктора, который в данном случае равен встроенному Object.prototype.

Не понимаю - почему прототипом создаваемого объекта служит Object.prototype а не просто Object? Ведь prototype это свойство, а прототипом должен быть объект.

Answer 1

Object - это функция-конструктор.

У конструкторов есть специальное свойство prototype, которое используется для конструирования объекта.

Поэтому все вполне логично:

  1. вызывается конструктор ( в данном случае функция Object )
  2. создаваемому объекту устанавливается прототип из соответствующего поля конструктора.
Answer 2

Если вызов функции происходит с использование ключевого слова New, то интерпретатор создает пустой объект и передает его функции конструктору в качестве контекста. Это значит что этот пустой объект становится значением ключевого слова this внутри функции. После того как функция выполнит инициализацию свойств вновь созданного объекта, этот объект становится значением выражения создания объекта и в качества значения свойства prototype, вновь созданного объекта, устанавливается значение свойства prototype функции конструктора. Таковы правила создания объектов в языке JS

READ ALSO
Сделать не кликабельным div

Сделать не кликабельным div

Здравствуйте, вообщем простой вопросЕсть div блок, внутри которого textarea, ссылка, и пару картинок

381
Добавить элемент в многомерный массив (php)

Добавить элемент в многомерный массив (php)

Есть многомерный массив $catalog с неограниченной вложенностьюНапример,

317
file_get_contents ошибка denwer

file_get_contents ошибка denwer

выдает ошибку:

375
Установка модуля pthreads php Ubuntu

Установка модуля pthreads php Ubuntu

Пытался установить composer Ввожу команду php composerphar install и выдает следующую ошибку

354