Page 73 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 73

Чтобы использовать оператор  обращения к члену класса, имя свойства должно
       быть корректным идентификатором. Если нужны имена свойств, не являющиеся до­
       пустимыми идентификаторами, используйте оператор вычисляемого доступа к члену
       (computed member access), применимый также и к допустимым идентификаторам.
                           r
       obj [ "not  an  identifie " ]    =  3 ;
       obj [ "not  a n   ident ifier " ] ;   1 1   3
       obj [ " c olor" ]  ;           1 1   "yellow"
          Оператор вычисляемого доступа к члену применим и для свойств символов.

       const  S I Z E   =  SymЬo ( ) ;
                        l
       obj [ S I Z E ]    =  8 ;
          [
       obj  S I Z E ] ;               1 1   8
          Здесь объект obj  содержит три свойства с ключами: "color" (строка, являющаяся
                                                    i
       допустимым идентификатором), "not  an  ident f i e r "   (строка, не являющаяся до­
                                    S
       пустимым идентификатором) и  I Z E (символ).
                  Если вы используете консоль JavaScript, то можете заметить, что она
                  не выводит  символ S I Z E   как св о йство объекта obj . Вы можете про­
                  верить это, введя  obj [ SIZ ] .   Дело в том, что символьные свойства
                                          E
                  рассматриваются иначе и не отображаются стандартно. Обратите так-
                                                                        S
                  же внимание на то, что ключ для этого свойства - символ  I ZE, а не
                         "
                  строка  S I Z E " .   Вы можете проверить это, введя obj  S IZE   =  О  (опе­
                                                                 .
                  раторы  доступа к члену всегда  работают  правильно для  строковых
                                                 .
                                     [
                  свойств), а затем obj  S IZE ]  и obj  S IZE (или obj  " SIZ " ] ).
                                                              (
                                                                   E
          Давайте остановимся и вспомним о различиях между базовыми типами и объек­
       тами.  В этом разделе  мы  манипулируем объектом, содержащим  переменную  ob ,
                                                                                  j
       и изменяем его, однако obj  все время был указателем на тот же объект. Если бы
       obj вместо этого содержал строку, число или значение любого другого базового типа,
       то при его изменении это было бы каждый раз другое значение базового типа. Ины­
       ми словами, obj указывает на тот же объект все время, но сам объект изменяется.
          В экземпляре объекта obj  мы создали пустой объект, но литеральный синтаксис
       объектов позволяет нам также создать объект, обладающий свойствами с самого на­
       чала. Свойства в фигурных скобках разделяются запятыми,  а имена и значения -
       двоеточиями.
       const  saml  =  {
           name :  ' Sam ' ,
           age :  4 ,
       }  ;
       const  sam2   {  name :  ' S am  ' ,   age :  4  } ;   // объявление  в  одной  строке
   68   69   70   71   72   73   74   75   76   77   78