2015-09-09 33 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