完美解决IE低版本不支持call与apply的问题


Posted in Javascript onDecember 05, 2013

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); 
    }; 
}
Javascript 相关文章推荐
javaScript对象和属性的创建方法
Jan 15 Javascript
javascript 随机展示头像实现代码
Dec 06 Javascript
jquery ajax方式直接提交整个表单核心代码
Aug 15 Javascript
浅析JavaScript中的同名标识符优先级
Dec 06 Javascript
深入了解Node.js中的一些特性
Sep 25 Javascript
原生js制作简单的数字键盘
Apr 24 Javascript
js如何实现淡入淡出效果
Nov 18 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
Feb 15 Javascript
angular中的http拦截器Interceptors的实现
Feb 21 Javascript
微信小程序中页面FOR循环和嵌套循环
Jun 21 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
Dec 01 Javascript
基于javascript的无缝滚动动画实现2
Aug 07 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
Dec 05 #Javascript
jQuery表格插件ParamQuery简单使用方法示例
Dec 05 #Javascript
各浏览器对document.getElementById等方法的实现差异解析
Dec 05 #Javascript
给事件响应函数传参数的四种方式小结
Dec 05 #Javascript
弹出最简单的模式化遮罩层的js代码
Dec 04 #Javascript
js如何设置在iframe框架中指定div不显示
Dec 04 #Javascript
jquery动态改变onclick属性导致失效的问题解决方法
Dec 04 #Javascript
You might like
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
Python Web开发模板引擎优缺点总结
2014/05/06 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
python实现Flappy Bird源码
2018/12/24 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
python如何支持并发方法详解
2020/07/25 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
会计员岗位职责
2014/03/15 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
八年级作文之友谊
2019/12/02 职场文书
iPhone13再次曝光
2021/04/15 数码科技
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python