Рассмотрим следующий пример объекта javascript с двумя методами
let O = {
foo: function() { return 'foo'},
bar () { return 'bar' },
}
Оба foo
и bar
являются методами объекта O
последний определяется с документированным сокращением без function
ключевое слово. Я думал, что эти определения, где эквивалентны, кажется, нет. На первый взгляд O.foo
и O.bar
выглядят как обычные функции, но есть разница, по крайней мере, в FireFox (73) и Safari (13): первый является конструктором, а второй - нет:
new O.foo() // OK
new O.bar() // TypeError: O.bar is not a constructor
Откуда эта разница? Это единственная разница? Это задокументировано?