这是块声明中的计算方法名称,还是拼写错误

Is this a computed method name in a block declaration - or is it a typo?

本文关键字:错误 方法 声明 计算      更新时间:2023-09-26

我无法理解这段JavaScript:

  Template.welcome.events({
    'submit form' (event, template) {
      event.preventDefault()
    }
  })

submit form是一个方法的名称,里面有空格吗?如果是这样的话,第1行的大括号是否表示块范围的开始?

这只是代码中的一个拼写错误吗?'submit form'之后应该有一个:

我试着通过一个linter,JSLint失败了,但ESLint给了我关于Template未定义的无关错误。

我在这个示例存储库中找到了它:https://github.com/themeteorchef/holiday-wish-list/blob/master/code/client/templates/public/welcome.js#L8..L12

此代码示例使用ES2015语法,可以使用标准ES5语法重写如下:

Template.welcome.events({
  'submit form': function(event, template) {
    event.preventDefault();
  },
});

在ES2015中,您可以使用更简单的语法来声明对象方法,避免使用更详细的语法将它们指定为函数的属性。(property: function(){...})。

const object = {
  method1() {
    //
  },
  method2() {
    //
  },
};

这是在对象文字中定义方法的ES6简写。

它相当于并编译为:

Template.welcome.events({
  'submit form': function (event, template) {
    event.preventDefault();
  }
});