完美解决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 相关文章推荐
YUI 读码日记之 YAHOO.lang.is*
Mar 22 Javascript
Jquery ajaxsubmit上传图片实现代码
Nov 04 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
Apr 22 Javascript
JavaScript实现时间倒计时跳转(推荐)
Jun 28 Javascript
JavaScript实现自定义媒体播放器方法介绍
Jan 03 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
Mar 09 Javascript
微信小程序 仿猫眼实现实例代码
Mar 14 Javascript
JS实现评价的星星功能
Aug 20 Javascript
webpack 3.X学习之多页面打包的方法
Sep 04 Javascript
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
Vue利用Blob下载原生二进制数组文件
Sep 25 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简单封装了一些常用JS操作
2007/02/25 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
PHP安全下载文件的方法
2016/04/07 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
php简单截取字符串代码示例
2016/10/19 PHP
PHP抽象类和接口用法实例详解
2019/07/20 PHP
修改发贴的编辑功能
2007/03/07 Javascript
Div自动滚动到末尾的代码
2008/10/26 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
jquery编写日期选择器
2017/03/16 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
vant实现购物车功能
2020/06/29 Javascript
Python中分数的相关使用教程
2015/03/30 Python
python多进程实现进程间通信实例
2017/11/24 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
Android面试宝典
2013/08/06 面试题
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
医药公司采购员岗位职责
2014/09/12 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
详解Python中*args和**kwargs的使用
2022/04/07 Python