Стрелочная функция — это простой способ создать функцию в ES6, которая не создает собственную ссылку this. Он всегда указывал на этот контекст, откуда он создается или вызывается.
Стрелочная функция не создает свою собственную область видимости, она всегда зависит от области, в которой она создается.
О функции стрелки:
- Он не имеет собственной привязки к this , аргументам или super и не должен использоваться как метод,
- Он не подходит для метода вызова, применения и привязки, который обычно основан на установлении области действия.
- Не может использоваться в качестве конструктора,
- Не может использовать метод Yield внутри своего тела,
- Не имеет доступа к ключевому слову new.target.
- У него нет свойства Prototype.
Новый оператор:
Функция стрелки не имеет конструктора, поэтому она не используется для создания экземпляра с ключевым словом new.
const test = (x,y) => x + y;
const result = new test();
Примечание: выдает ошибку: test не является конструктором
Не может использоваться в качестве метода:
Мы можем использовать его как метод, но всякий раз, когда у нас есть зависимость от этого объекта в методе, мы не можем его использовать.
const People = { name: 'angularfeed', getName: () => { return this.name; } }
const result = People.getName(); console.log(result); // throw undefined
Вышеупомянутый метод вернет неопределенное значение, поскольку контекст this установлен как глобальный, откуда вызывается метод getName, а имя свойства в глобальном объекте недоступно, тогда он возвращает неопределенное значение.
Таким образом, вместо использования функции стрелки в качестве метода используйте традиционный метод для доступа к этой ссылке на объект.
Свойство прототипа:
Стрелочная функция не имеет свойства прототипа
const Test = (x) => x;
const result = Test.prototype.name = 'angularfeed'; // undefined
Он выдаст неопределенное значение, потому что у стрелочной функции нет свойства с именем прототип.
Метод доходности:
Стрелочную функцию нельзя использовать в качестве генератора, так как внутри стрелочной функции не поддерживается yield.
звоните, применяйте и связывайте:
Вызов, применение и привязка не поддерживаются в функции стрелки, поскольку они используются для выполнения в разных областях.
Литералы объекта:
Должен заключать литерал объекта в круглые скобки,
const Test = () => ({name: 'angularfeed'})
Синтаксис:
const Example = () => {} // returns undefined
(() => 'Hello World')() // return Hello World
const list = ['India', 'USA', 'Ireland']; list.map((item, index) => { return `${item} has index ${index}`; })
Использованная литература: