加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 教程 > 正文

完美处理IE低版本不支持call与apply的问题

发布时间:2023-08-12 14:34:44 所属栏目:教程 来源:
导读:Function.prototype的apply和call是在1999年发布的ECMA262 Edition3中才加入的(1998年发布ECMA262 Edition2)。在此前的的浏览器如IE5.01(JScript 5.0)中是没有apply和call的。因此会带来一些兼容性问题,以下是修复
Function.prototype的apply和call是在1999年发布的ECMA262 Edition3中才加入的(1998年发布ECMA262 Edition2)。在此前的的浏览器如IE5.01(JScript 5.0)中是没有apply和call的。因此会带来一些兼容性问题,以下是修复方式:
 
代码如下:
 
if(!Function.prototype.apply){
 
    Function.prototype.apply = function(obj, args){
 
        obj = obj == undefined ? window : Object(obj);//obj可以是js基本类型
 
        var i = 0, ary = [], str;
 
        if(args){
 
            for( len=args.length; i<len; i++ ){
 
                ary[i] = "args[" + i + "]";
 
            }
 
        }
 
        obj._apply = this;
 
        str = 'obj._apply(' + ary.join(',') + ')';
 
        try{
 
            return eval(str);
 
        }catch(e){
 
        }finally{
 
            delete obj._apply;
 
        }   
 
    };
 
}
 
if(!Function.prototype.call){
 
    Function.prototype.call = function(obj){
 
        var i = 1, args = [];
 
        for( len=arguments.length; i<len; i++ ){
 
            args[i-1] = arguments[i];
 
        }
 
        return this.apply(obj, args);
 
    };
 
}
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章