标签:处理 contex 判断 slice 结果 解决 改变 执行 return
bind()方法可以改变一个方法中的this,并且不立即执行该方法,但是该方法存在兼容性问题,IE9+,ff4+,chrome7+支持此方法,opera和safari不支持。因此我们需要使用apply()方法来解决bind()兼容性问题。
1 //在Function的原型上定义myBind()方法 2 Function.prototype.myBind=function myBind(context){ 3 //获取要操作的函数 4 var _this=this; 5 //获取实参(context除外) 6 var args=Array.prototype.slice.call(arguments,1); 7 //判断当前浏览器是否兼容bind()方法 8 if(‘bind‘ in Function.prototype){ 9 //如果浏览器兼容bind()方法,则使用bind()方法,并返回bind()方法执行后的结果 10 return _this.bind(context,args); 11 } 12 //如果不兼容bind()方法,则返回一个匿名函数 13 return function(){ 14 _this.apply(context,args); 15 } 16 }
标签:处理 contex 判断 slice 结果 解决 改变 执行 return
原文地址:http://www.cnblogs.com/fxf111/p/7481642.html