1. Array — экзотический объект, поскольку у него есть своеобразное поведение, когда изменяется свойство 'length'. В отличие от обычных объектов, изменение 'length' массива может привести к добавлению или удалению элементов.
const exoticArray = [1, 2, 3];
exoticArray.length = 2; // Элемент 3 будет удален из массива
2. String — экзотический объект, поскольку его элементы не могут быть изменены после создания, и доступ к ним возможен только через индекс. Также у него есть особые методы, например, `charAt` или slice.
const exoticString = 'Hello';
exoticString[0] = 'W'; // Не сработает, потому что строки неизменяемы
3. Proxy — экзотический объект, поскольку он позволяет создавать объекты с настраиваемыми обработчиками для различных операций. Прокси-объекты могут перехватывать и модифицировать основные операции с объектами, такие как доступ к свойствам, присваивание значений и вызов функций.
const target = { message: 'Hello, World!' };
const handler = {
get: function (obj, prop) {
return prop in obj ? obj[prop] : 'Property not found';
},
};
const exoticProxy = new Proxy(target, handler);
console.log(exoticProxy.message); // Вывод: 'Hello, World!'
console.log(exoticProxy.unknown); // Вывод: 'Property not found'
Теперь, когда вы знаете разницу между обычными, стандартными и экзотическими объектами в JavaScript, вы можете использовать их наиболее эффективно в своих проектах. Экзотические объекты могут показаться сложными, но они предоставляют больше возможностей для решения задач и создания более гибких и мощных приложений. 🚀@chulakov_dev