Обзор ES6 в 350 пунктах. Часть вторая

https://ponyfoo.com/articles/es6#symbols
  • Перевод
Моя серия заметок ES6 in Depth, состоящая из 24 записей, описывает большинство синтаксических изменений и нововведений в ES6. В этой публикации я подведу итог всего изложенного в предыдущих статьях, чтобы дать возможность посмотреть еще раз на всё вместе.



Содержание

  • Введение
  • Инструментарий
  • Assignment Destructing
  • Spread Operator и Rest Parameters
  • Стрелочные функции
  • Шаблонные строки
  • Литералы объектов
  • Классы
  • Let и Const
  • Символы
  • Итераторы
  • Генераторы
  • Промисы
  • Maps
  • WeakMaps
  • Sets
  • WeakSets
  • Прокси
  • Reflection
  • Number
  • Math
  • Array
  • Object
  • Строки и Unicode
  • Модули

Часть первая: здесь.

Символы

  • Новый примитивный тип данных в ES6.
  • Можно создавать собственные символы: var symbol = Symbol()
  • Можно добавить описание для нужд отладки Symbol('ponyfoo')
  • Символы неизменяемы и уникальны: Symbol()
    , Symbol()
    , Symbol('foo')
    и Symbol('foo')
    – все разные.
  • Тип символов – symbol
    , так что typeof Symbol() === 'symbol'
    .
  • Можно создавать глобальные символы при помощи Symbol.for(key)
    .

  • Если символ с этим key
    существует, вызов его вернет.
  • Иначе будет создан новый символ с key
    в качестве описания.
  • Symbol.keyFor(symbol)
    – это обратная функция, принимающая symbol
    и возвращающая его key
    .
  • Глобальные символы глобальны, насколько это возможно, то есть абсолютно. Для доступа к символам используется единый глобальный регистр:
  • контекст window
    ;
  • контекст eval
    ;
  • контекст .

  • +16
  • 18,8k
  • 7
Plarium 77,85
Разработчик мобильных и браузерных игр
Поделиться публикацией
Похожие публикации
Комментарии 7
    0
    > Maps
    Аллилуйя!
      –8
      Еще немного и JS станет прям AS3
        0
        Минус в том, что половина этих фич сейчас нуждается в подключении дополнительных скриптов в рантайме. Простая трансляция в ES5 не прокатывает.
          +1
          Ну, полифиллы в нашем деле всегда были, есть и будут. На мой взгляд, полифилл — лучшее решение, чем слой абстракции для обеспечения одинаковой работы в разных браузерах с разными API.
          0
          > Вы избегаете утечек памяти без ручного учета ссылок – думайте о WeakMap как об IDisposable в .NET.
          весьма натянутое сравнение на мой взгляд. Всё же в .NET есть намного более близкий аналог: WeakReference
            +1
            Promise.all(...promises) создает промис, который разрешается, когда все промисы ...promises выполнены или один из них отклонен.


            Я конечно уверен всего лишь на 99%, но если хотя бы один из ..promises отклонен то Promise.all тоже будет отклонен
              +2
              так и есть,
              Промисы создаются в состоянии ожидания и могут быть разрешены, будучи выполненными или отклоненными.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое