2012-02-01 79 views
2

说我已经得到了代码:CoffeeScript的调用返回的对象的方法(链接)

cat = { 
    feed: (food) -> 
     alert "cat ate #{food}" 
} 

pets = { 
    "maximus": cat 
} 

getPet = (name) -> 
    pets[name] 

我如何可以调用由“getPet”猫对象返回的“饲料”的方法?这不是一个有效的代码:

getPet "maximus" feed "Fish" 

在普通的JavaScript就应该是这样的:

getPet("maximus").feed("Fish"); 
+2

我会留下评论,因为我真的不太了解CS,但是使用他们的在线CS评估器,我把它和'(getPet“maximus”)一起使用。更熟悉的人可能有更好的方法。 – 2012-02-01 15:38:13

+0

谢谢!至少是这样的! – 2012-02-01 15:47:52

+1

好的。我看到的其他方法似乎只是简单地重新引入'()'。 'getPet(“maximus”)。feed“Fish”' – 2012-02-01 15:49:03

回答

4

你不能没有上链的最左边的部分括号链接。

getPet('maximus').feed 'fish' 
+0

很遗憾。我有很长的序列。但是,无论如何,括号都可以!谢谢。 – 2012-02-01 15:57:45

+0

为什么在CS中删除括号还有一个原因并不是一件好事。我真的希望这个“功能”不在CS中。现在,就是这样,我们的团队已经决定将它们从if语句的谓词中分离出来,但将它们留在其他地方。我认为它伤害了可读性,使它们不起作用,除了几次击键外,什么也不存在。 – 2012-02-01 21:15:31

+0

对于我来说,我认为一个好的经验法则就是在分配任何方法返回时使用括号,所以a = runMethod(x),但是我避免包含它们。如果有多个测试,我只在条件中使用它们。 – Sandro 2012-02-01 21:33:09