Выбор ответа Junior Прототипы и классы спрашивают часто обновлено

__proto__ против prototype

Вопрос

Какое утверждение о __proto__ и prototype верное?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: prototype у конструктора станет прототипом экземпляров, proto это прототип объекта. F.prototype это обычное свойство функции, объект, который new F() назначит прототипом новому экземпляру. obj.proto (правильнее Object.getPrototypeOf(obj)) показывает прототип конкретного объекта.

Варианты ответа

  1. Это два названия одного и того же свойства: старое и новое, работают одинаково
  2. prototype у конструктора станет прототипом экземпляров, __proto__ это прототип объектаправильный ответ
  3. __proto__ есть только у функций, а prototype у всех объектов, включая массивы
  4. prototype хранит копию методов, которая создаётся для каждого экземпляра при new

Разбор

F.prototype это обычное свойство функции, объект, который new F() назначит прототипом новому экземпляру. obj.__proto__ (правильнее Object.getPrototypeOf(obj)) показывает прототип конкретного объекта. Связь такая: Object.getPrototypeOf(new F()) === F.prototype. Наоборот не бывает: prototype есть у функций (кроме стрелок и методов), а прототип есть у любого объекта. Копий методов нет, прототип один на все экземпляры.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.