intermediate
Цепочка прототипов
Делегированный поиск свойств, собственные и унаследованные свойства и риски мутации прототипов.
Объекты делегируют поиск свойств по цепочке прототипов до `null`. Если свойство не own, рантайм идёт по `[[Prototype]]`. Методы на прототипах разделяются между экземплярами.
`Object.hasOwn(obj, key)` проверяет собственные свойства. `for...in` включает перечисляемые унаследованные ключи. Мутация `Array.prototype` опасна (prototype pollution).
function Person(name) { this.name = name; }
Person.prototype.speak = function() { return this.name; };
const ada = new Person('Ada');
console.log(Object.hasOwn(ada, 'speak')); // false
На интервью объясняйте концепцию на конкретном примере и называйте поведение рантайма, которое проверяют.
Типовые ошибки: путать похожие API и забывать edge cases в live coding.
Компромисс часто между ясностью и производительностью или между безопасностью и удобством.
Чеклист:
- Отделяйте own от унаследованных свойств.
- Объясняйте делегирование, а не копирование.
- Не мутируйте встроенные прототипы.