2017-08-28 117 views
0

我下面这个教程,函数对象内部参数

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

但我的问题是不是阿波罗服务器,它只是使用JavaScript对象的一小部分;

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

前一块是在这个对象,但我不知道这个定义JavaScript中的理论,什么是:我想知道的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; 
+0

有什么问题,完全是一个功能? – Salketer

+0

它的a * block *是* object方法的一部分*,它返回* object * –

回答

3

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

这简写语法类似于gettersetter语法ECMAScript中2015年

速记语法使用命名函数来代替匿名函数还推出。 与匿名函数不同,这些命名函数可以从函数体本身调用。

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

 
console.log(foo.bar());

的更常见的方式做同样的事情,会是像这样

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

 
console.log(foo.bar());