2014-10-18 44 views
1

我跑這個代碼到控制檯,並試圖打電話:地理解JavaScript鏈接模式

obj.foo().bar().coo().moo(); 

這是我以前的代碼:

function bar() { 
    this.coo = function() { 
    this.moo = function() { 
     console.log("yay"); 
    } 
    } 
} 

obj = { 
    foo : function() {this.bar = bar} 
};  

的錯誤返回是「類型錯誤:無法讀取屬性「 「未定義」欄。雖然,當我寫道:

obj.foo(); 
obj.bar(); 
obj.coo(); 
obj.moo(); 

它工作正常。爲什麼使用方法鏈接的第一次調用不起作用,就好像我是分別調用每種方法一樣。

+2

你想取消嵌套這些方法... – dandavis 2014-10-18 19:38:22

回答

4

你不會返回任何東西。您需要在每個函數的末尾添加return this以便讓對象鏈接。

+0

感謝你的工作。 – mike 2014-10-18 21:04:16

+0

如果這解決了你的問題,不要忘了打勾號讓別人知道它已經解決了。 – Scimonster 2014-10-18 21:05:57