1. 程式人生 > >bind()兼容性處理

bind()兼容性處理

使用 spa clas cnblogs 方法 解決 pro apply() call

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 }

bind()兼容性處理