2017-08-28 89 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());