06. Callable entities

В ES6 существуют следующие вызываемые сущности. Для всех них выражение typeof вернет строку function.

  • Традиционные функции

    • В строгом режиме this равен undefined, а в нестрогом режиме - это глобальный объект.

  • Функции-генераторы

    • Правила this как для обычной функции.

    • Функция генератор никогда не указывает на объект-генератора, которая она возвращает.

  • Arrow-функции

    • Не имеют собственного контекста - все окружение получают лексически из родительского окружения.

    • Предпочитайте arrow-функции как функции обратного вызова.

    • Если arrow-функции используются как методы объекта, то такие функции по прежнему не будут иметь собственного this, а получат его правилам лексической области видимости.

  • Методы

    • this хранит значение объекта, которому принадлежит данный метод.

    • Если функция-метод использует super, то она сохраняет привязку к своему окружению и [[HomeObject]].

  • Методы-генераторы

    • Методы генераторы ведут себя как генераторы (возвращают объект генератора), но помимо этого в них можно использовать this и super.

  • Классы

    • this указывает на создаваемый объект.

    • Классы нельзя вызывать как функции, только как конструкторы.

    • Вызовы, включающие в себя super могут находиться только в двух местах в программе: вызов super через метод и вызов super в конструкторе.

  • Async-функции - функции, оперирующие Promise.

Last updated