如何解决bind()的浏览器兼容性问题

[ 问 ]: bind()方法在使用时受到浏览器兼容性的限制,那这该如何解决兼容性问题呢?

答 : 在主流浏览器下原型对象是具有bind属性的,我们可以通过这个特性来区分浏览器,使用apply()方法来帮助bind()改变this指向从而解决兼容性问题。
  //在Function的原型上自定义myBind()方法
      Function.prototype.myBind=function myBind(context){
  //获取要操作的函数
      var _this=this;
  //获取实参(context除外)
      var args=Array.prototype.slice.call(arguments,1);
      
  //判断当前浏览器是否兼容bind()方法
 if('bind' in Function.prototype){
  //如果浏览器兼容bind()方法,则使用bind()方法,并返回bind()方法执行后的结果
     return _this.bind(context,args);
 }
 //如果不兼容bind()方法,则返回一个匿名函数
     return function(){
        _this.apply(context,args);
    }
 }

猜你喜欢

转载自blog.csdn.net/qq_38169981/article/details/88545764