Javascript:call() & apply() 與bind() 重溫
雖然call() 和apply() 允許我們改變函數的上下文並手動或作為數組傳遞參數,bind()方法提供了獨特的
何時使用bind()
當您需要建立具有預定義上下文的函數以供以後執行時,Bind 特別有用。與立即呼叫函數的 call() 或 apply() 不同,bind 傳回具有指定上下文集的新函數。
以下範例示範了差異:
var obj = { x: 81, getX: function() { return this.x; } }; alert(obj.getX.bind(obj)()); // 81 alert(obj.getX.call(obj)); // 81 alert(obj.getX.apply(obj)); // 81
在此例如,bind() 建立一個新函數,該函數在執行時始終將其上下文設為 obj 物件。這在事件監聽器中特別有價值,因為函數上下文可能會變得不明確。
用例
範例:
function MyObject(element) { this.elm = element; element.addEventListener('click', this.onClick.bind(this), false); } MyObject.prototype.onClick = function(e) { var t = this; // do something with [t]... // Without bind, the context of this function would be different. };
結論結論
結論結論結論結論結論結論結論結論結論結論結論結論結論結論結論 Bind允許您使用預定義上下文建立函數,這使得它在事件處理、非同步程式設計和其他維護上下文至關重要的場景中特別有用。 call() 和 apply() 提供即時函數調用,而 bind 則傳回一個函數,以便稍後在固定上下文中執行。以上是Javascript `call()` 和 `apply()` 與 `bind()`:什麼時候該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!