我經常需要將方法從對象傳遞到其他對象。不過,我通常希望將方法附加到原始對象(通過附加,我的意思是'this'應該指向原始對象)。我知道有幾個方法可以做到這一點:如何在javascript中傳遞方法?
a)在對象的構造函數:ObjectA = function() { var that = this; var method = function(a,b,c) { that.abc = a+b+c }}
二)在對象A已通過對象B:objectB.assign(function(a,b,c) { that.method(a,b,c) })
C)這兩個對象外:objectB.assign(function(a,b,c) { objectA.method(a,b,c) })
我想知道是否有更簡單的方法來傳遞附加到其原始對象的方法。
謝謝,這是完美的!雖然我還不明白。 – peterjwest 2010-06-06 11:13:48
我編輯了一下,所以現在可能更清晰了。 如果不是,你可以問...... – ob1 2010-06-06 11:15:49
也許值得看看Prototype的'Function#bind'的當前(1.7 RC 2)源,它的作用與ob1的'createDelegate'的作用相同,但它經歷了相當的幾個月前的性能測試和優化:http://github.com/sstephenson/prototype/blob/master/src/lang/function.js#LC108另外:我會使用'scope ||未定義「而不是」範圍||「窗口「,以避免不必要的瀏覽器特異性和覆蓋」window「的問題。調用''apply'使用'undefined'作爲範圍將使用全局對象。 – 2010-06-06 11:39:43