函数与对象内的参数

时间:2017-08-28 15:06:00

标签: javascript ecmascript-6 apollo-server

我遵循本教程,

https://dev-blog.apollodata.com/tutorial-building-a-graphql-server-cddaa023c035

但我的问题不是关于apollo服务器,它只是使用javascript对象的一小部分;我想知道javascript的理论,这个块在对象内定义了什么:

author(root, args){
  return { id: 1, firstName: 'Hello', lastName: 'World' };
}

上一个块就在这个对象中,但是我不知道javascript中关于这个定义的理论,究竟是什么?

const resolvers = {
  Query: {
    author(root, args){
      return { id: 1, firstName: 'Hello', lastName: 'World' };
    },
  },
  Author: {
    posts(author){
      return [
        { id: 1, title: 'A post', text: 'Some text', views: 2},
        { id: 2, title: 'Another post', text: 'Some other text', views: 200}
      ];
    },
  },
  Post: {
    author(post){
      return { id: 1, firstName: 'Hello', lastName: 'World' };
    },
  },
};

export default resolvers;

1 个答案:

答案 0 :(得分:3)

此语法称为Method Definitions,它允许您将方法声明为对象的属性,而不使用箭头或function关键字。

此简写语法类似于ECMAScript 2015中引入的gettersetter语法。

简写语法使用命名函数而不是匿名函数。 与匿名函数不同,这些命名函数可以从函数体本身调用。

var foo = {
  bar() { // method definition
    return "Hello world !"; 
  }
};

console.log( foo.bar() );

执行相同操作的更常用的方法是使用像这样的函数

var foo = {
  bar : function() {
    return "Hello world !"; 
  }
};

console.log( foo.bar() );