1 год назад
👩‍💻 Разбираемся вместе с Романом Максимовым в том что скрыто в объектах JS: - Каждый объект в JavaScript имеет свой основной внутренний класс и скрытый класс, описывающий его форму. - Скрытые классы наследуют друг друга и выстраивются в деревья классов. Форма объекта { a: 1 } будет родительской для формы объекта { a: 1, b: 2 }. - Порядок свойств имеет значение. Объекты { a: 1, b: 2 } и { b: 2, a: 1 } будут иметь две разные формы. - Класс-наследник хранит ссылку на класс-родитель и информацию о том, что было изменено (переход). - В дереве классов каждого объекта количество уровней не менее количества свойств в объекте. - Самыми быстрыми свойствами объекта будут те, которые объявлены при инициализации. - Нетипичные изменения формы объекта, такие как удаление свойства, могут привести к изменению типа хранения свойств на медленный. - Если в объекте есть внешние свойства, а внутренних меньше 4-х, такой объект можно немного оптимизировать, так как пустой объект, по умолчанию имеет несколько слотов для in-object свойств. - Массив является обычным классом, форма которого имеет вид { length: [W__] }. Элементы массива хранятся в специальных структурах, ссылки на которые размещены внутри объекта. Добавление и удаление элементов массива не приводят к увеличению дерева классов. - Использование нетипичных ключей в массиве, например не числовых или вне диапазона [0 .. 2**32 - 2]), приводит к созданию новых форм в дереве классов. - Попытка изменить атрибут элемента массива приведет к смене типа хранилища на медленный. #article https://blog.frontend-almanac.ru/js-object-structure
Нужен ли JavaScript? Как скрыть и показать блоки на сайте на чистом CSS
Даже если вы только начали заниматься веб-разработкой, то наверняка уже знаете, что для перехода к нужному блоку на странице (прокрутке в нужное место) можно использовать якоря - ссылки вида: <a href="#block-id">Текст ссылки</a> Переход по такой ссылке автоматически прокрутит страницу к блоку с нужным id. А можно ли не "прокручивать", просто сделать такой блок скрытым и показывать его только после нажатия на ссылку? Давайте попробуем, - при клике по ссылке увидим плавно выезжающее слева сообщение...