PassFront
  1. PassFront
  2. База знаний
  3. Объекты и прототипы

Как получить прототип?

Объекты и прототипы

Прототип объекта получают через `Object.getPrototypeOf(obj)` (современный способ) или устаревшее свойство `obj.__proto__`. У функций-конструкторов — свойство `prototype`.

Object.getPrototypeOf (рекомендуется)

const obj = {};
Object.getPrototypeOf(obj); // Object.prototype

const arr = [];
Object.getPrototypeOf(arr); // Array.prototype

__proto__ (устаревший геттер)

obj.__proto__; // тот же прототип (не рекомендуется)

Работает, но устарел — используйте getPrototypeOf.

prototype у конструкторов

prototype — свойство функции-конструктора (не экземпляра), объект-прототип для будущих экземпляров:

function User() {}
User.prototype;              // объект-прототип экземпляров

const u = new User();
Object.getPrototypeOf(u) === User.prototype; // true

Различие __proto__ и prototype

  • `__proto__` (или getPrototypeOf) — ссылка экземпляра на его прототип.
  • `prototype` — свойство функции-конструктора (шаблон прототипа для экземпляров).
u.__proto__ === User.prototype; // true — связь

Установить прототип

Object.setPrototypeOf(obj, proto); // установить
Object.create(proto);              // создать с прототипом

Проверка

proto.isPrototypeOf(obj);       // является ли прототипом
obj instanceof User;            // через цепочку прототипов

Коротко для собеседования

Прототип получают Object.getPrototypeOf(obj) (современный способ) или obj.__proto__ (устаревший). prototype — свойство функции-конструктора (прототип для экземпляров), а __proto__/getPrototypeOf — ссылка экземпляра на его прототип (u.__proto__ === User.prototype). Установить — Object.setPrototypeOf/Object.create.

Другие вопросы раздела