完美解决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 相关文章推荐
Jquery实现简单的动画效果代码
Mar 18 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
Jun 04 Javascript
Javascript中设置默认参数值示例
Sep 11 Javascript
jQuery 中DOM 操作详解
Jan 13 Javascript
JavaScript获得url所有参数键值表的方法
Mar 21 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
May 12 Javascript
JS实现点击按钮获取页面高度的方法
Nov 02 Javascript
js实现开启密码大写提示
Dec 21 Javascript
jQuery+ajax的资源回收处理机制分析
Jan 07 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
Mar 10 Javascript
js捆绑TypeScript声明文件的方法教程
Apr 13 Javascript
javascript实现留言板功能
Feb 08 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&amp;java(三)
2006/10/09 PHP
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
模拟一个类似百度google的模糊搜索下拉列表
2014/04/15 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
angular分页指令操作
2017/01/09 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
python追加元素到列表的方法
2015/07/28 Python
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
python 网络编程常用代码段
2016/08/28 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
python解析含有重复key的json方法
2019/01/22 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
python3 配置logging日志类的操作
2020/04/08 Python
Keras搭建自编码器操作
2020/07/03 Python
解决python对齐错误的方法
2020/07/16 Python
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
仓管岗位职责范本
2014/02/08 职场文书
初级会计求职信范文
2014/02/15 职场文书
销售类求职信
2014/06/13 职场文书
农村文化建设标语
2014/10/07 职场文书
三下乡活动心得体会
2016/01/23 职场文书
阿里云日志过滤器配置日志服务
2022/04/09 Servers
Nginx配置使用详解
2022/07/07 Servers