我在Meteor.js教程中发现了这段代码。它是ES2015:
Meteor.methods({
'tasks.insert'(text) {
check(text, String);
// Make sure the user is logged in before inserting a task
if (! this.userId) {
throw new Meteor.Error('not-authorized');
}
Tasks.insert({
text,
createdAt: new Date(),
owner: this.userId,
username: Meteor.users.findOne(this.userId).username,
});
},
});
我对这种定义功能的方式感到好奇。我们可以看到,Meteor.methods
被赋予一个对象作为参数,该对象包含函数作为其道具'值。但那真是太糟糕了:
'tasks.insert'(text) {
??我希望' tasks.insert'是一个表示道具名称的字符串,该道具名称应该映射到执行插入的函数。但为什么不喜欢
'tasks.insert': (text) => {
或
'tasks.insert': function(text) {
这是什么模式,这怎么可能是一个有效的JS?
答案 0 :(得分:1)
这是ES6 syntatic sugar。
示例:
var a = {
foo: 'bar',
log() {
console.log('hi');
}
}
a.foo // 'bar'
a.log() // 'hi'
就像你完成log: function { console.log('hi') }