Шаблонный литерал не работает в сочетании с синтаксисом функции стрелки внутри объекта?

Извините, если это глупая ошибка, я довольно плохо знаком с JavaScript.

Так что у меня есть пара ключ-функция ('sayHello') внутри объекта person которая возвращает интерполированную строку, используя шаблонный литерал (${}). Он отлично работает, когда я использую стандартный синтаксис функции.

let person = {
  name: 'Ava',
  sayHello () {
    return `Hello, my name is ${this.name}.`;
  }
};

console.log(person.sayHello());
// output: Hello, my name is Ava.

Однако, когда я использую синтаксис функции стрелки с маркером стрелки, он возвращает значение name как неопределенное.

let person = {
  name: 'Ava',
  sayHello: () => {
    return `Hello, my name is ${this.name}.`;
  }
};

console.log(person.sayHello());
// output: Hello, my name is undefined

Кто-нибудь знает, в чем здесь проблема, даже если я сделал только синтаксическую ошибку?

Благодарю.

1 ответ

Решение

Выражения со стрелками лучше всего подходят для не-методных функций. У них нет this, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

Другие вопросы по тегам