L'application et l'appel de Function.prototype n'ont été ajoutés que dans ECMA262 Edition3 publié en 1999 (ECMA262 Edition2 a été publié en 1998). Dans les navigateurs précédents tels que IE5.01 (JScript 5.0), il n'y a pas d'application ni d'appel. Cela entraînera des problèmes de compatibilité. Voici les correctifs :
Copiez le code comme suit :
si(!Function.prototype.apply){
Function.prototype.apply = fonction(obj, args){
obj = obj == fenêtre non définie : Object(obj);//obj peut être un type de base js
var je = 0, ary = [], str;
si(arguments){
pour( len=args.length; i<len; i++ ){
ary[i] = "args[" + i + "]";
}
}
obj._apply = ceci ;
str = 'obj._apply(' + ary.join(',') + ')';
essayer{
return eval(str);
}attraper(e){
}enfin{
supprimer obj._apply ;
}
} ;
}
si(!Function.prototype.call){
Function.prototype.call = fonction(obj){
var je = 1, arguments = [];
pour( len=arguments.length; i<len; i++ ){
args[i-1] = arguments[i];
}
renvoie this.apply(obj, args);
} ;
}