Рубрики
Без рубрики

Функция стрелки лучшие практики

Когда «это» используется в функции стрелки, «это» будет «это значением» в окружающем лексическом объеме. Эта специфическая особенность функций стрелки меняет много вещей, поэтому есть две лучшие практики, которые вам нужно знать. Теги с JavaScript.

Когда Это используется в функции стрелки, Это будет Это ценность в окружающей лексической области.

Функции стрелки меняют много вещей, поэтому есть две лучшие практики, которые вам нужно знать.

  1. Не создавайте методы со стрелками функциями
  2. Создание функций внутри методов со стрелками функций

::: Примечание Эта статья является выдержкой из Учите JavaScript Отказ Проверьте это, если вы нашли эту статью полезную. :::

Прежде чем прочитать это

Если вы запутались о Это Ключевое слово, попробуйте читать Эта статья Отказ Это может помочь вашему убранию некоторых путаний относительно Это Отказ

Практика № 1: не создавайте методы со стрелками функциями

Когда вы используете объектно-ориентированные программирование, вам может потребоваться вызвать метод из другого метода. Чтобы вызвать метод из другого метода, вам нужно Это указать обратно в экземпляр (который называется методом).

Пример:

Давайте построим Человек с Сайхи метод. Сайхи говорит Привет! , затем выруются, чтобы закончить разговор, заявив имя человека.

Мы можем использовать GetFullName Метод, который возвращает полное имя человека внутри Сайхи Отказ

function Human(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

Human.prototype.getFullname = function () {
  return this.firstName + " " + this.lastName;
};

Human.prototype.sayHi = function () {
  console.log(`Hi! My name is ${this.getFullName()}`);
};

Экземпляр может использовать Сайхи метод И вы ожидаете, что это будет работать. Это работает, потому что Это указывает обратно в экземпляр.

const zell = new Human("Zell", "Liew");
zell.sayHi();

Смотри, что произойдет, если вы измените Сайхи к функции стрелки.

Human.prototype.sayHi = (_) => {
  console.log(`Hi! My name is ${this.getFullName()}`);
};

// ...
zell.sayHi();

Почему?

В этом случае Это внутри Сайхи указывает на Окно Отказ С Окно не имеет GetFullName Метод, звонок GetFullName приведет к ошибке.

Это указывает на Окно потому что Окно Лексический Это Значение это Окно . Мы можем проверить, что Это это Окно Войдите в систему.

Human.prototype.sayHi = (_) => {
  console.log(this);
  console.log(`Hi! My name is ${this.getFullName()}`);
};

// ...
zell.sayHi();

Короче говоря: Не используйте функции стрелки для создания методов!

Создание функций внутри методов со стрелками функций

Это Всегда указывает на Окно Когда он используется в простой функции. Заявление верно, даже если вы создаете простую функцию внутри метода.

const object = {
  this() {
    function sayThis() {
      console.log(this);
    }
    sayThis();
  },
};

object.this();

Мы обычно хотим Это быть объектом, когда мы используем Это внутри способа. (Итак, мы можем назвать другие методы).

Один из способов назначать Это в другую переменную. Мы часто называем эту переменную Я или что Отказ Затем мы будем использовать Я или что внутри функции.

const object = {
  this() {
    const self = this;
    function sayThis() {
      console.log(self);
    }
    sayThis();
  },
};

object.this();

Другой способ состоит в том, чтобы создать новую функцию с Bind Отказ

const object = {
  this() {
    function sayThis() {
      console.log(this);
    }
    const correctSayThis = sayThis.bind(this);
    correctSayThis();
  },
};

object.this();

Если вы используете функции стрелки, вам не нужно использовать Я , что или связывать . Вы можете написать функцию стрелки напрямую, а Это будет указывать на объект (потому что окружающий это ценность является объектом).

const object = {
  hello() {
    const sayThis = (_) => {
      console.log(this);
    };
    sayThis();
  },
};

object.hello();

Спасибо за прочтение. Эта статья была первоначально опубликована на мой блог Отказ Зарегистрируйтесь на мою рассылку, если вы хотите больше статей, чтобы помочь вам стать лучшим разработчиком Frontend.

Оригинал: “https://dev.to/zellwk/arrow-function-best-practices-1po1”