Проверяет понимание прототипного наследования в JavaScript и возможности создания объектов без прототипа.
В JavaScript каждый объект по умолчанию имеет прототип — объект, от которого он наследует свойства и методы. Однако существует способ создать объект, который не имеет прототипа, используя Object.create(null). Такой объект не наследует ничего от Object.prototype, включая методы toString, hasOwnProperty и другие.
// Создание объекта без прототипа
const obj = Object.create(null);
obj.key = 'value';
console.log(obj.key); // 'value'
console.log(obj.toString); // undefined
// Обычный объект с прототипом
const normalObj = {};
console.log(normalObj.toString); // [Function: toString]Объекты без прототипа часто используются как чистые словари или карты для хранения данных, где ключи могут быть любыми строками. Например, если вы используете __proto__ как ключ, обычный объект может вызвать проблемы, так как это зарезервированное свойство. Объект без прототипа избегает таких коллизий.
Создание объекта без прототипа с помощью Object.create(null) полезно для безопасного хранения данных, когда нужно избежать наследования и конфликтов с зарезервированными именами. Это особенно актуально при работе с пользовательскими ключами или в библиотеках, где требуется максимальная чистота объекта.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию