如這裏說:Function.bind vs Javascript中的閉包:如何選擇?
http://jqfundamentals.com/book/index.html
閉包也可以用來解決與此關鍵字, 這是唯一的每個範圍的問題。這個 機制在處理回調時可能特別有用 ,儘管在 這些情況下,通常最好使用Function.bind,這將避免任何 與範圍 遍歷相關的開銷。
但它並沒有真正說出如何區分這兩種情況。事實上,我不明白作者的意思是「避免與範圍遍歷相關的任何開銷」。你可以解釋嗎?
如這裏說:Function.bind vs Javascript中的閉包:如何選擇?
http://jqfundamentals.com/book/index.html
閉包也可以用來解決與此關鍵字, 這是唯一的每個範圍的問題。這個 機制在處理回調時可能特別有用 ,儘管在 這些情況下,通常最好使用Function.bind,這將避免任何 與範圍 遍歷相關的開銷。
但它並沒有真正說出如何區分這兩種情況。事實上,我不明白作者的意思是「避免與範圍遍歷相關的任何開銷」。你可以解釋嗎?
看看這條線中的示例在上面的鏈接
console.log(self.myName, this.myName);
(帶自=此;幾行以上)。閉包定義的outerFunction方法存在於不同的作用域中,這就是爲什麼它與outerObj對象具有不同的值。 (self.myName!= this.myName)
作用域遍歷意味着,當您想要獲取存在於不同作用域中的值(變量,對象)時,因此會增加額外開銷(代碼執行速度會變慢) 。
使用綁定,您正在調用一個具有現有範圍的函數,以便範圍遍歷不會發生。
它指的是什麼這樣的事情
obj.doSomething = function() {
var that = this;
setTimeout(function() {
// this is the window
// that is the obj
that.doSomethingElse();
}, 50);
};
VS
obj.doSomething = function() {
setTimeout((function() {
// this is the obj
this.doSomethingElse();
}).bind(this), 50);
};
Benchmark。鉻無顯着差異。
關閉方法似乎要快兩倍http://jsperf.com/bind-vs-closure-performace – sbr
鏈接已損壞。 「對不起,你在找什麼不在這裏」 – Luke
@sbr我的電腦上速度提高了25倍 – Supersharp