2016-03-17 118 views
4

我們中的一些人正試圖創建一個JavaScript庫,以在RESTful API上快速運行JSON查詢。JavaScript ES6:es6類中的分組方法?

我想要做的是將一組方法相對於它們的目的進行分組。

例如;

通過API我可以獲取用戶屬性。我不想將所有這些方法都放在主對象下面,而是將它們在API類對象中分組。

即 改造這個:

myAPI.getUserById() 

這樣:

myAPI.User.getByID() 

myAPI.User.getByName() 

我們將使用下面的代碼作爲一個簡單的例子。我如何讓我的用戶方法嵌套在myAPI類中的用戶對象中?

class myAPI { 
    constructor(url) { 
    this.url = url; 

    //Code to connect to instance... 

    } 

    getUserById(userId){ 
    // function 
    } 
} 

解決

class myAPI { 
    constructor(url) { 
    this.url = url; 
    this.UserAPI = new UserClass(this); 

    //Code to connect to instance... 

    } 

    getUserById(userId){ 
    // function 
    } 
} 

class UserClass { 
    constructor(parent){ 
    this.myAPI = parent; 
    } 
} 
+0

可能的重複[組織原型JavaScript,同時保留對象引用和繼承](http://stackoverflow.com/q/15884096/1048572) - 不,沒有好方法只使用一個類來完成此操作。 – Bergi

回答

4

你可以使用組成:

class UserAPI { 

    constructor(url) { 
     this.url = url; 
    }  

    getById() { 
    } 
} 

class API { 

    constructor(url) { 

     this.url = url; 
     this.User = new UserAPI(url); 
    } 
} 

var myAPI = new API(); 

myAPI.User.getById(); 

這種方式,可以將所有組的種類分成類。您甚至可以根據用戶的要求區分API的不同實現。

+1

這是許多應用程序使用的服務/模型模式的基礎。 – ssube

+1

謝謝蒂姆。從來沒有想過這樣。正是我在找什麼。謝謝! – elias91

+0

我在JSFiddle中添加了一個例子https://jsfiddle.net/MisterFantastic/0u50f7jy/ – Thanigainathan