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

Если  мы теперь хотим добавить роль пользователя, можем воспользоваться ме­
       тодом add ( ) .

          e
       rol s . a dd ( "User" )  ;     / /  Набор  [  11User11  ]
                                                                             (
          Чтобы сделать этого пользователя администратором, вызовите метод add  )   сно-
       ва.
                      n
       roles . a dd ( "Admi " ) ;   / /  Набор  [  "User" ,   "Admin "
          Как и у Мар, у объекта Set есть свойство  i ze.
                                               s
       roles . s i z e ;    1 1   2

          Достоинство наборов в том, что мы не должны выяснять, находится ли уже нечто
       в наборе, прежде чем его добавим. При попытке добавить в набор нечто, что уже там
       находится, ничего не происходит.
          e
       rol s . a dd ( "User" )  ;     1 1   Набор   "User",  "Admin "  ]
       roles . s ize;       1 1   2
                                                              (
          Чтобы удалить роль, мы просто вызываем метод delete  ) ,   который возвращает
       true, если роль была в наборе, и false - в противном случае.
       roles . d elete ( "Admin" ) ;     1 1   true
          e
       rol s ;                  / /  Набор  [  "User"  J
                        n
       roles . d elete ( "Admi " ) ;   / /  false

       Слабые наборы
          Слабые наборы могут содержать только объекты, и эти объекты удаляются в про­
       цессе сборки мусора. Как и в WeakМap, значения в WeakSet не могут быть перебраны,
       что делает слабые наборы очень редко применяемыми. Фактически единственный
       подходящий случай использования для слабых наборов - это когда необходимо
       определять, есть ли данный объект в наборе.
                                                                      t
          Например, у Санта Клауса мог бы быть WeakSet по имени naugh y   (непослуш­
       ные), чтобы он мог решить, кому достанется уголь.
       const  naughty  =  new  WeakSet ( ) ;

       const  children  =  [
             name :  " S uzy"  } ,
             name :  " D erek"  } ,
       ] ;

       naughty . a dd ( c hildren [ l ] )  ;

       for ( let  child  of  children)
           if ( naughty . h a s ( c hild) )

                                                                Слабые наборы   1 9 5
   189   190   191   192   193   194   195   196   197   198   199