【问题标题】:function with parameters inside an object对象内部带参数的函数
【发布时间】:2017-08-28 23:40:03
【问题描述】:

我正在学习本教程,

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;

【问题讨论】:

  • 到底是什么问题?
  • 它是一个 block,它是返回 object literal 的 object method 的一部分

标签: javascript ecmascript-6 apollo-server


【解决方案1】:

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

这种速记语法类似于 ECMAScript 2015 中引入的 getter 和 setter 语法。

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

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

console.log( foo.bar() );

做同样事情的更常用的方法是使用这样的函数

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

console.log( foo.bar() );

【讨论】:

    猜你喜欢
    • 2021-06-30
    • 2017-12-20
    • 2012-05-09
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    相关资源
    最近更新 更多