浏览 1340 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-06-07
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); }; }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |