本章节通过代码实例简单对prototype.bind()方法做一下介绍,希望能够给对它还比较陌生的朋友带来一定帮助。

建议在阅读本章节之前事先参阅javascript this用法详解和javascript prototype原型简单介绍一章节。 

大家可能遇到过这样的情况,为了在其他的函数中保持this上下文的一致性,会使用下面类似的代码:
   [ 其他 ] 运行代码    下载代码
<script>
var that=this;
</script>
也就是将this指向对象的引用赋值给变量that,以供后面使用。

下面看一段代码实例:
   [ 其他 ] 运行代码    下载代码
<script>
var obj={
  show:function(){
  },
  done:function(){
  },
  getOther:function(func){
    func()
  },
  render:function(){
    var that = this;
    this.getOther(function () {
      that.show();
      that.done();
    });
  }
}
</script>
在以上代码中,将this指向对象的引用赋值给that,这样当调用obj.render()方法的时候,能够确保调用的show()方法和done方法是属于obj对象的,否则是调用的window对象上的方法。但是上面的方式稍显繁琐,ES5也提供了Function.prototype.bind(),解决上面的问题也就更为轻松,代码修改如下:
   [ 其他 ] 运行代码    下载代码
<script>
render:function(){
  var that = this;
  this.getOther(function () {
    this.show();
    this.done();
  }.bind(this));
}
</script>
上面代码利用bind()实现了我们的要求,下面就介绍一下它的语法:

语法结构:
   [ 其他 ] 运行代码    下载代码
<script>
fun.bind(thisArg[, arg1[, arg2[, ...]]])
</script>
此方法会创建一个新函数,称为绑定函数.当调用这个绑定函数时,绑定函数会以创建它时传入bind方法的第一个参数作为this,传入bind方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数.

bind()的代码我们可以大概描述如下:
   [ 其他 ] 运行代码    下载代码
<script>
Function.prototype.bind=function(thisArg,arg1,arg2) {
  var fn = this;
  return function() {
    return fn.apply(scope,arg1,arg2);
  };
}
</script>

代码描述:Function.prototype.bind()方法用法。Function.prototype.bind()方法用法简单介绍代码



129 172



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册



×
×
51前端

注册

×
绑定手机

请绑定手机号,在继续操作

×
单次下载支付

应付金额:279

支付完成后,回到下载页面,在进行下载

官方QQ群
意见反馈
qq群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到