2015-09-09 36 views
0

在jQuery和Node.js的環境下,假設你有以下幾點:的Node.js和jQuery:鏈接命令循環

var object = new Soda().drink("Coke").drink("Pepsi").drink("7Up"); 

現在,讓我們說,我有N個飲料名單,我不想硬編碼此編程:

var object = new Soda().drink("D1").drink("D2").drink("Dn")... 

什麼是程序化的方法解決這個問題,如果我需要這個順序運行,我不能使用:

var object = new Soda(); 
for (var in j){ 
    object.drink(i); 
} 
+0

爲什麼不修改'drink'方法,因此可以接受值的數組? – undefined

回答

0

new Soda().drink("Coke").drink("Pepsi").drink("7Up")意味着.drink()返回一個值,該值本身是一個有效的對象,可以用(原始對象或封裝修改狀態的某個其他對象)再次調用.drink()

如果是這樣的話,你可以:

var currentDrinkable = object; 
for(var drink in drinks) { 
    currentDrinkable = currentDrinkable.drink(drink) 
} 
+0

方法鏈接意味着'drink'返回實例,不需要存儲返回的值! – undefined

+0

@Vohuman - 不,它不。它意味着它返回一個本身是可飲用的值 - 就像Promises ...一樣,then()不會返回最初的承諾,但本身就是「可靠的」。 – Amit

+0

這是一個不同的故事,因爲原始代碼不會存儲每個'drink'調用的返回值,這是一個演繹謬誤。 – undefined