Разница свойств функции Console.log между литералом объекта и точечной записью

Я создаю объекты, используя две разные нотации, а затем вывожу их в консоль:

object = {key: 'value', func: function() {}};
console.log(object);

вывод: {ключ: 'значение', функция: [Функция: функция]}

object.key = 'value';
object.func = function() {};
console.log(object);

вывод: {ключ: 'значение', функция: [Функция]}

Почему есть разница в выводах? Это имеет значение?


person vfinn    schedule 27.05.2021    source источник
comment
точечная нотация имеет больше синтаксических ограничений   -  person Mister Jojo    schedule 27.05.2021
comment
Это node.js или консоль браузера? Невозможно воспроизвести в хроме   -  person adiga    schedule 27.05.2021
comment
Я использовал Node.js.   -  person vfinn    schedule 27.05.2021


Ответы (1)


Это не имеет ничего общего с записью через точку и записью в скобках.

В примере (a) вы объявляете имя свойства (func) и значение (функцию) в литеральном объекте. В примере (b) вы впоследствии назначаете функцию свойству.

В первом случае func используется как идентификатор привязки, который используется для присвоения имени функции.

Во втором примере этого нет.

Это вряд ли будет иметь большое значение, но имена функций могут быть полезны при отладке. Вы можете указать функциональному выражению имя явно:

object.func = function func () {};
person Quentin    schedule 27.05.2021
comment
Хорошо, но я думаю, что это имело бы смысл, даже если бы в первом случае не было никакого имени функции. - person vfinn; 27.05.2021