Создание функций в объекте

let user = {
  sayHi() {
    // ...
  },
  sayBye: function() {
    // ...
  }
}

Есть ли разница в объявлении функций sayHi() и satBye() ?


Ответы (2 шт):

Автор решения: BrainBoom

Кратко могу ответить так: Эти два варианта имеют небольшие отличия, связанные с наследованием объектов. (Подтверждение моих слов можно найти здесь: https://learn.javascript.ru/object-methods).

Конкретно для вашего случая, в чем заключаются отличия, я так и не нашел. Но могу объяснить в чем отличия для следующего способа написания:

class Msg {
    constructor() {
        this.sayHi = function() {
            console.log("hi");
        }
    }

    sayBye() {
        console.log("by");
    }
}

Метод будет записан в prototype. Это можно проверить с помощью следующего кода:

console.log(Msg.prototype.sayBy);

А вот sayHi будет присвоен объекту только в момент вызова new Msg();

→ Ссылка
Автор решения: fortavey

Первый вариант это новый синтаксис ES6. Так что разница может быть в совместимости с старыми браузерами

→ Ссылка