2012-10-21 39 views
2

如何在JavaScript中創建一個函數列表,使這些操作一起執行?如何創建可以鏈接在一起的函數?

對不起,我不知道它叫什麼,但是當你選擇一些東西而不是你添加類時,你也可以在同一時間做其他事情!

例如:

list.getAll().count() 

或者

list.getAll().removeLast().dosomthingElse().count() 

我嘗試過很多辦法,但遺憾的是我不能讓它工作,除非我向這不是我想要的功能類!

+3

你想知道'如何在JavaScript中鏈接方法'。 –

回答

5

這就是所謂的鏈接方法。您只需從該方法返回的對象引用(this):

List.prototype.getAll = function() { 
    // do something 
    return this; 
} 

或者,如果該方法會產生一個新的結果,您創建相同類型的對象,並返回:

List.prototype.removeLast = function() { 
    var items = this.items.slice(0, items.length - 1); 
    return new List(items); 
} 

(您還可以創建不同類型的對象,例如一個toCollection方法可以創建一個列表中的所有項目新Collection對象,並返回。)

+0

優秀,謝謝Guffa – Abod

2

您需要定義一個方法。這是附加到對象的功能。

你定義它是這樣的:

window.myMethod = function(){ 
    alert(this) ; 
} 

的對象沒有被window。要將另一種方法鏈接到最後,請使用return this。現在

window.myMethod = function(){ 
    alert(this) ; 
    return this ; 
} 

window.myOtherMethod = function(){ 
    console.log(this) ; 
    return this ; 
} 

window.myMethod().myOtherMethod() ; 

可以使用的方法,因爲鏈的第二方法與第一接收(在這個例子window)原始對象。

+0

非常感謝ColBeseder – Abod

相關問題