对象/类中的函数声明

时间:2018-09-13 15:30:04

标签: javascript node.js function object declaration

我有以下问题:在Node / Javascript中,为什么此函数声明在对象或类中是错误的?

var obj = {
  function x() {
    /* code */
  },
  bar: function() {
    /* code */
  }
};

第一个函数声明x()引起原因

  function x() {
           ^

SyntaxError: Unexpected identifier

我不明白为什么我不能在对象或类中使用function关键字,使用function x()或仅使用x(),仅使用{{ {1}}可以正常工作,但是在其前面添加x()关键字-会导致上述问题。为什么呢?

2 个答案:

答案 0 :(得分:2)

您需要在Javascript中为其对象分配一个键,第二个键有效,因为您分配给它的键是bar,而第一个键没有。尝试在函数声明之前添加键,如下所示:

var obj = {
  foo:function x() {
    /* code */
  },
  bar: function() {
    /* code */
  }
};

答案 1 :(得分:1)

  

在Node / Javascript中,为什么此函数声明在对象或类内部错误?

当然是错误的,在JavaScript中,object是一对键/值,用逗号分隔。对于您的代码,您正在破坏这种语法,因为您没有在声明您的情况下的属性,因此需要在编写function x()之前指定键。

如果您引用MDN Object initializer reference,则会看到:

  

对象初始值设定项是零或更多对的逗号分隔列表   属性名称和对象的关联值,包含在   大括号({})。

如果您勾选New notations in ECMAScript 2015 section of Docs,将会看到写function x()x()或仅写x()的区别。

根据docs,这些语法可能是 Method definitions 语法:

var o = {
  property: function (parameters) {},
  get property() {},
  set property(value) {}
};