Page 338 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 338
get perimeter ( ) {
return this . width*2 + this . height*2 ;
Здесь нет функции-установщика значения для периметра потому, что нет ника
кого очевидного способа определить ширину и высоту прямоугольника исходя из
длины периметра; это свойство имеет смысл сделать свойством только для чтения.
Аналогично вы можете создать функцию-установщик без функции-получателя,
хотя это намного менее распространенный вариант.
Атр б уты свойств объекта
и
К настоящему моменту вы уже достаточно поработали со свойствами объектов.
Известно, что у них есть ключ (который может быть строкой или символом) и зна
чение (которое может иметь любой тип). Мы также знаем, что порядок следования
свойств в объекте не гарантируется (как, например, у массива или объекта Мар).
Известны два способа обращения к свойствам объекта (доступ к члену с использо
ванием точечной формы записи и вычисляемый доступ к члену с использованием
квадратных скобок). Наконец известны три способа создания свойства с помощью
литеральной формы записи объекта (обычные свойства с ключами, которые явля
ются идентификаторами, вычисляемые имена свойств, позволяющие обойтись без
идентификаторов и использовать символы, а также сокращения методов).
Как бы то ни было, о свойствах необходимо знать больше. В частности, у свойств
есть атрибуты, контролирующие поведение свойства в контексте объекта, которому
они принадлежат. Начнем с создания свойства, используя одну из известных мето
дик, а затем используем метод Obj ect . getOwnPropertyDe c riptor для исследования
s
его атрибутов.
const obj = { foo : "bar" } ;
Obj ect . getOwnPropertyDescriptor ( o bj , ' f oo ' J ;
Это код возвратит следующее.
value : "bar " , writaЫe : true , enumeraЫe : t r ue , configuraЫe : true }
Термины атрибут свойства (property attribute), дескриптор свойства
(property descriptor) и конфигурация свойства (property configuration)
используются как синонимы; все они означают одно и то же.
Мы увидели три разных атрибута свойства.
• Атрибут writaЫe (перезаписываемый) определяет, может ли значение свой
ства быть изменено.
Атрибуты свойств объекта 341

