Apply und Call of Function.prototype wurden erst in der 1999 veröffentlichten ECMA262 Edition3 hinzugefügt (ECMA262 Edition2 wurde 1998 veröffentlicht). In früheren Browsern wie IE5.01 (JScript 5.0) gibt es kein Apply und Call. Dies wird einige Kompatibilitätsprobleme verursachen. Hier sind die Korrekturen:
Kopieren Sie den Codecode wie folgt:
if(!Function.prototype.apply){
Function.prototype.apply = function(obj, args){
obj = obj == undefiniert ? window : Object(obj);//obj kann ein js-Basistyp sein
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(',') + ')';
versuchen{
return eval(str);
}catch(e){
}Endlich{
obj._apply löschen;
}
};
}
if(!Function.prototype.call){
Function.prototype.call = function(obj){
var i = 1, args = [];
for( len=arguments.length; i<len; i++ ){
args[i-1] = Argumente[i];
}
return this.apply(obj, args);
};
}