Проверяет понимание связи между синтаксическим сахаром литеральной записи массива и механизмом прототипного наследования в JavaScript.
В JavaScript литеральная запись массива, такая как [1, 2, 3], является синтаксическим сахаром для создания нового экземпляра объекта Array. Когда вы используете квадратные скобки, движок JavaScript автоматически вызывает конструктор Array и устанавливает прототип созданного объекта равным Array.prototype. Это означает, что каждый массив, созданный литералом, наследует все методы и свойства, определенные в Array.prototype.
Прототипное наследование в JavaScript основано на цепочке прототипов. Каждый объект имеет внутреннее свойство [[Prototype]], которое ссылается на другой объект (его прототип). Для массивов этот прототип — Array.prototype. Когда вы обращаетесь к методу, например arr.push(), JavaScript сначала ищет его в самом объекте arr. Если не находит, он переходит к прототипу Array.prototype. Если и там нет, поиск продолжается по цепочке до Object.prototype.
// Литеральная запись массива
const arr = [1, 2, 3];
// Проверяем, что arr является экземпляром Array
console.log(arr instanceof Array); // true
// Доступ к методам из Array.prototype
arr.push(4);
console.log(arr); // [1, 2, 3, 4]
// Свойство constructor указывает на Array
console.log(arr.constructor === Array); // true
// Цепочка прототипов
console.log(Object.getPrototypeOf(arr) === Array.prototype); // true
console.log(Object.getPrototypeOf(Array.prototype) === Object.prototype); // trueПонимание этой связи важно для работы с массивами в JavaScript. Например, если вы хотите расширить функциональность всех массивов, вы можете добавить метод в Array.prototype. Однако это считается плохой практикой, так как может привести к конфликтам в больших проектах. Вместо этого лучше использовать статические методы или утилиты.
Литеральная запись массива неразрывно связана с прототипным наследованием через Array.prototype, что обеспечивает единообразный доступ к методам для всех массивов. Это фундаментальная концепция JavaScript, которую необходимо понимать для эффективной работы с данными и отладки.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию