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
   333   334   335   336   337   338   339   340   341   342   343