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中文网其他相关文章!