Как получить прототип?
Объекты и прототипы
Прототип объекта получают через `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.