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 от унаследованных свойств.
  • Объясняйте делегирование, а не копирование.
  • Не мутируйте встроенные прототипы.