Класс: базовый синтаксис
Data:
20 Dicembre 2023
До того, как начнёте изучать способы работы со стилями и классами в JavaScript, есть одно важное правило. Надеемся, это достаточно очевидно, но мы всё равно должны об этом упомянуть. При этом автоматически вызывается метод constructor(), в нём мы можем инициализировать объект.
На практике нам часто надо создавать много объектов одного вида, например пользователей, товары или что-то ещё. На самом деле класс в JavaScript — это особый тип функции. Поэтому оператор typeof вернет значение function для класса. Метод constructor() внутри класса вызывается автоматически каждый раз, когда создается объект. В этом примере person1 и person2 — объекты класса Person. Создание класса в JavaScript похоже на использование конструктора объекта — это просто синтаксический сахар.
Например, CSS-свойство background-color для объекта style будет указывать как backgroundColor. А, например, CSS-свойство с браузерным префиксом -webkit-border-radius – как WebkitBorderRadius. В DOM у каждого элемента Вечерняя звезда паттерн есть свойство style, с помощью которого мы можем управлять его стилями. Значение данного свойства — это объект, который доступен только для чтения. Установка стилей элементу в этом случае осуществляется посредством добавления к нему соответствующих свойств.
Как и функции, классы можно определять внутри другого выражения, передавать, возвращать, присваивать и т.д. Частая ошибка начинающих разработчиков – ставить запятую между методами класса, что приводит к синтаксической ошибке. …Затем можно вызывать на объекте методы, такие как кто такой трейдер и чем он занимается user.sayHi().
Constructor
Давным-давно getComputedStyle был создан для получения вычисленных значений, но оказалось, что окончательные значения гораздо удобнее, и стандарт изменился. Иногда нам нужно добавить свойство стиля, а потом, позже, убрать его. Свойство elem.style – это объект, который соответствует тому, что написано в атрибуте “style”. Изменение класса является одним из наиболее часто используемых действий в скриптах. В следующих главах мы узнаем больше о классах, включая наследование и другие возможности.
Те, которые мы установили ему с помощью атрибута style и в соответствующем ему DOM-свойстве. Например, когда нужно добавить какой-то один определённый класс к элементу, или удалить его. Чтобы эти действия и другие производить очень просто у элемента есть специальное для этих случаев DOM-свойство classList. Здесь получаем текущий класс заголовка и затем изменяем его на новый класс – “header-color”. Благодаря использованию классов не придется настраивать каждое отдельное свойство css с помощью свойства style. При вызове метода объекта new User он будет взят из прототипа, как описано в главе F.prototype.
Иногда это то, что нам нужно, но часто мы хотим добавить/удалить один класс. Как и в литеральных объектах, в классах можно объявлять вычисляемые свойства, геттеры/сеттеры и т.д. Например, определить наличие какого-то одного определённого класса у элемента, используя вышеприведённые способы уже нельзя осуществить так просто. Ключевое слово class используется для создания класса. Абстрактные подклассы, или mix-ins, — это шаблоны для классов.
Таким образом, объекты new User имеют доступ к методам класса. Свойство classList представляет собой специальный объект (DOMTokenList), который содержит методы для выполнения различных операций над классами элемента. Второй способ определения класса — class expression (выражение класса). Можно создавать именованные и безымянные отзывы о рынке форекс выражения. В первом случае имя выражения класса находится в локальной области видимости класса и может быть получено через свойства самого класса, а не его экземпляра. Если мы присваиваем что-то elem.className, то это заменяет всю строку с классами.
Сброс стилей
Приватные поля могут быть изменены или прочитаны только в рамках класса и не могут быть вызваны извне. Например, если есть свойства paddingLeft/paddingTop, то что мы получим вызывая getComputedStyle(elem).padding? Ничего, или, может быть, «сгенерированное» значение из известных внутренних отступов? В других случаях, например, чтобы сделать текст красным, добавить значок фона – описываем это в CSS и добавляем класс (JavaScript может это сделать). Перепишите его, используя современный синтаксис классов.
- Первый способ взаимодействия с классами элементов сводится к использованию DOM-свойства className.
- Используйте CSS-позиционирование для отображения элемента в заданных координатах.
- Если мы установим в style.display пустую строку, то браузер применит CSS-классы и встроенные стили, как если бы такого свойства style.display вообще не было.
- В строгом режиме автоупаковка не произойдёт – значение this останется прежним.
- Частая ошибка начинающих разработчиков – ставить запятую между методами класса, что приводит к синтаксической ошибке.
Управление классом (классами) элемента
Поэтому, действительно, есть причины, по которым class можно считать синтаксическим сахаром для определения конструктора вместе с методами прототипа. Выполнить операцию, аналогичную той которую выполняет свойство style.cssText, можно ещё через метод setAttribute. Примеры использования DOM-свойства style для установки стилей элементам. Второй способ выполнить операции, связанные с классом элемента – это использовать методы для управления атрибутами.
Паттерн species позволяет вам переопределять конструкторы по умолчанию. Так что, в настоящее время getComputedStyle фактически возвращает окончательное значение свойства, для геометрии оно обычно в пикселях. Но у элемента может быть не один класс, а несколько. В этом случае работать с ними как со строкой не очень удобно.
Также в дополнение к основной, описанной выше, функциональности, синтаксис class даёт ряд других интересных возможностей, с которыми мы познакомимся чуть позже. Как мы уже знаем из главы Конструктор, оператор “new”, с этим может помочь new function. Тела объявлений классов и выражений классов выполняются в строгом режиме (strict mode). Используйте CSS-позиционирование для отображения элемента в заданных координатах. …Но что, если нам нужно, скажем, увеличить отступ на 20px?
Первый способ взаимодействия с классами элементов сводится к использованию DOM-свойства className. Данное свойство является отражением атрибута class в DOM. Если вы не знаете, что такое DOM-свойства и чем они отличаются от атрибутов, то прочитать про это можете в этой статье. Кроме индивидуального установления стилей элементу мы можем установить их сразу с помощью специального свойства style.cssText.
В этой статье мы рассмотрим различные методы для работы с классами и стилями элемента. Познакомимся со свойствами classList и style, и примерами их использования для управления соответственно классами и стилями элементов на странице. Для добавления в элемент класса существует метод classList.add(). В качестве параметра он принимает имя класса, который нужно добавить. Ещё существует простой способ задать классы элементу через свойство className через обычное присваивание.
Ultimo aggiornamento
6 Settembre 2024, 10:01