JS编程建议——73:函数绑定有价值

  • 时间:
  • 浏览:1

};

var btn = document.getElementById('my-btn');

EventUtil.addHandler(btn, "click", function(event) {

}

在bind()中创建有有2个多 闭包,该闭包使用apply调用传入的参数,并为apply传递context对象和参数。

注意:这里使用的arguments对象是内部内部结构函数的,而非bind()的。在调用返回的函数时,会在给定的环境中执行被传入的函数并给出所有参数。

var handler = {

});

这是特定于这段代码的处置方案。创建多个闭包可能性会令代码变得难于理解和调试,就让 ,所以JavaScript库实现了有有2个多 可不不都上能 将函数绑定到指定环境的函数bind()。

bind()函数的功能是提供有有2个多 可选的执行上下文传递给函数,就让 在bind()函数内部内部结构返回有有2个多 函数,以纠正在函数调用上老出的执行上下文处在的变化。最容易老出的错误所以回调函数和事件处置线程并肩使用。

function bind(fn, context) {

建议73:函数绑定有价值

函数绑定所以为了纠正函数的执行上下文,怪怪的是当函数含有高this关键字的完后 ,你是什么 点尤其重要,稍微不小心,就会使函数的执行上下文处在跟预期不同的改变,导致 代码执行上的错误。函数绑定具有六个形态学 :

函数绑定要创建有有2个多 函数,可不不都上能 在特定环境中以指定参数调用那末 函数。

有有2个多 简单的bind()函数接收有有2个多 函数和有有2个多 环境,返回有有2个多 在给定环境中调用给定函数的函数,就让 将所有参数原封不动地传递过去。

被绑定函数与普通函数相比有更多的开销,它们需要更多内存,并肩也可能性多重函数调用而稍微慢就让 ,最好只在必要时使用。

第有有2个多 形态学 常常和回调函数及事件处置函数并肩使用。

var handler = {

};

var btn = document.getElementById('my-btn');

EventUtil.addHandler(btn, "click", bind(handler.handlerClick, handler));

};

var btn = document.getElementById('my-btn');

EventUtil.addHandler(btn, 'click', handler.handleClick); //undefined

老出上述结果的导致 在于那末保存handler.handleClick()环境(上下文环境),所以this对象最后指向了DOM按钮而非handler。可不不都上能 使用闭包修正此什么的现象:

var handler = {