Page 192 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 192
for ( l e t и of userRoles . keys ( ) )
console . l og ( u . n am ) ;
e
s
e
for ( l et r of userRole . valu s ( } )
console . log ( r ) ;
e
for ( l et ur of userRoles . entri s ( ) )
console . log ( ' $ { ur [ О ] . name } : $ { ur [ 1 ] } ' ) ;
1 1 обратите внимание : чтобы сделать этот перебор еще более
1 1 естественным, мы можем использовать деструктуризацию:
for ( l e t [u, r ] of userRoles . entries ( ) )
e
g
console . l o ( ' $ { u . n am } : $ { r } ' ) ;
/ / метод entries () - это стандартный итератор для отображений, так
/ / вы можете сократить предыдущий пример :
for ( l e t [u, r] of userRoles )
e
g
console . l o ( ' $ { u . n am ) : $ { r } ' ) ;
Если вместо итерируемого объекта необходим массив, вы можете использовать
оператор расширения.
[ . . . userRoles . v alues ( ) ] ; / / [ "User", "User ", "Admin " ]
Чтобы удалить одиночный элемент из отображения, используйте метод delete ) ( .
s
userRole . d elete ( u 2 ) ;
userRoles . s i z e ; 1 1 2
Наконец, если вы хотите удалить все элементы из отображения, то можете сде
(
лать это, используя метод clear ) .
s
userRole . c lear ( ) ;
userRol s . s i z e ; 1 1 о
e
н
Слабые отображе и я
Объект WeakМap идентичен объекту Мар, кроме следующего.
• Его ключи должны быть объектами.
• Ключи в WeakМap допускают сборку мусора.
• Объект WeakМap не может быть перебран или очищен.
Обычно JavaScript хранит объект в памяти, пока где-нибудь есть ссылка на него.
Например, если у вас будет объект, который является ключом в Мар, то JavaScript
будет хранить этот объект в памяти, пока объект Мар существует. С WeakМap все не
так. Из-за этого объект WeakMap не может быть перебран (есть слишком большая
Слабые отображения 1 9 3

