Применение и вызов Function.prototype были добавлены только в ECMA262 Edition3, выпущенном в 1999 году (ECMA262 Edition2 было выпущено в 1998 году). В предыдущих браузерах, таких как IE5.01 (JScript 5.0), нет приложений и вызовов. Это вызовет некоторые проблемы совместимости. Вот исправления:
Скопируйте код кода следующим образом:
если(!Function.prototype.apply){
Function.prototype.apply = функция(obj, args){
obj = obj == undefined ? window: Object(obj);//obj может быть базовым типом js
вар я = 0, ary = [], стр;
если(аргументы){
for(len=args.length; i<len; i++){
ary[i] = "args[" + i + "]";
}
}
obj._apply = это;
str = 'obj._apply(' + ary.join(',') + ')';
пытаться{
вернуть оценку (строка);
}поймать(е){
}окончательно{
удалить obj._apply;
}
};
}
если(!Function.prototype.call){
Function.prototype.call = функция(obj){
вар я = 1, аргументы = [];
for(len=arguments.length; i<len; i++){
args[i-1] = аргументы[i];
}
вернуть this.apply(obj, args);
};
}