完美解决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使用prototype定义对象类型(转)[
Dec 22 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
Dec 06 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
Jan 25 Javascript
Dom 学习总结以及实例的使用介绍
Apr 24 Javascript
瀑布流布局代码一例
Apr 11 Javascript
js限制文本框只能输入整数或者带小数点的数字
Apr 27 Javascript
Vue.js每天必学之数据双向绑定
Sep 05 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
Nov 24 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
May 22 Javascript
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
Vue export import 导入导出的多种方式与区别介绍
Feb 12 Javascript
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
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中get_object_vars()方法用法实例
2015/02/08 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
使用angular写一个hello world
2015/01/23 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
js仿拉勾网首页穿墙广告效果
2017/03/08 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
element中的$confirm的使用
2020/04/26 Javascript
Python中zfill()方法的使用教程
2015/05/20 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
mac使用python识别图形验证码功能
2020/01/10 Python
keras 读取多标签图像数据方式
2020/06/12 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
师范应届生教师求职信
2013/11/05 职场文书
农民致富事迹材料
2014/01/23 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
经典演讲稿汇总
2014/05/19 职场文书
乡镇消防安全责任书
2014/07/23 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
2016七夕情人节感言
2015/12/09 职场文书
导游词之西递宏村
2019/12/10 职场文书
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript