2
我最近在javascript中編寫了很多代碼,我使用Prototype.js來幫助處理很多樣板,只是綁定方法更多比值得,因爲我喜歡使用閉合而不是物體來完成繁重的工作。放棄使用紅寶石塊的習慣是很難放棄的。因此,這裏是我的問題:是否有創建閉包和some_func.bind之間的性能差異(這)
var func = some_func.bind(this);
...
func();
和
var that = this;
...
some_func(); // we just rename 'this' everywhere inside some_func to 'that'
之間的任何特定的性能差異,需要這些技巧,因爲內部函數默認爲全球範圍內的,而不是外部函數的上下文。特別是哪個版本讓事情更「平坦」。如果涉及到遞歸,那麼綁定版本將進入抓取狀態,因爲綁定會在函數內部保留摺疊函數,直到展開事物是不可能的,至少我認爲會發生這種情況。第二個版本是否有同樣的問題。
關於實際的性能差異,我真的不知道,但我知道有99.99%的機會,你不需要擔心這種差異。 – 2010-11-04 07:23:35
實際上,我遇到了一個帶有綁定調用的遞歸函數調用的問題,顯然這是一次爬行,我開始懷疑是否用'var that = this'創建了一個閉包。讓事情更「平坦」。 – davidk01 2010-11-04 07:26:18
正如我所說,我真的不知道性能差異是什麼,但我知道這兩種方法應該非常快。你確定這裏沒有其他的錯誤嗎?它經歷了多少次遞歸迭代?我可以說沒有更多的細節,我從來沒有親自有過遞歸函數和bind()的問題。 – 2010-11-04 07:29:43