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

  • 时间:
  • 浏览:1
  • 来源:5分11选5APP下载_5分11选5APP官方

};

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

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

}

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

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

var handler = {

建议73:函数绑定有价值

函数绑定没人 多 为了纠正函数的执行上下文,不得劲是当函数中包含this关键字的已经 ,这其他尤其重要,稍微不小心,就会使函数的执行上下文指在跟预期不同的改变,意味代码执行上的错误。函数绑定具有八个特性:

函数绑定要创建八个 函数,可不可否在特定环境中以指定参数调用曾经函数。

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

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

第八个 特性常常和回调函数及事件处理函数同时使用。

var handler = {

});

这是特定于这段代码的处理方案。创建多个闭包可能会令代码变得难于理解和调试,已经 ,没人 多JavaScript库实现了八个 可不可否将函数绑定到指定环境的函数bind()。

bind()函数的功能是提供八个 可选的执行上下文传递给函数,已经 在bind()函数内控 返回八个 函数,以纠正在函数调用上再次出先的执行上下文指在的变化。最容易再次出先的错误没人 多 回调函数和事件处理系统系统进程同时使用。

function bind(fn, context) {

};

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

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

再次出先上述结果的意味在于没人 保存handler.handleClick()环境(上下文环境),没人 多this对象最后指向了DOM按钮而非handler。可不可否使用闭包修正此问题:

var handler = {

};

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

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