Aplicar e chamar Function.prototype foram adicionados apenas no ECMA262 Edition3 lançado em 1999 (ECMA262 Edition2 foi lançado em 1998). Em navegadores anteriores, como IE5.01 (JScript 5.0), não há aplicação e chamada. Isso causará alguns problemas de compatibilidade.
Copie o código do código da seguinte forma:
if(!Function.prototype.apply){
Função.prototype.apply = função(obj, args){
obj = obj == indefinido window : Object(obj);//obj pode ser um tipo básico js
var i = 0, ary = [], str;
se(argumentos){
for(len=args.length; i<len; i++ ){
ary[i] = "args[" + i + "]";
}
}
obj._apply = isto;
str = 'obj._apply(' + ary.join(',') + ')';
tentar{
retornar avaliação(str);
}pegar(e){
}finalmente{
excluir obj._apply;
}
};
}
if(!Function.prototype.call){
Função.prototype.call = função(obj){
var i = 1, args = [];
for( len=argumentos.comprimento; i<len; i++ ){
args[i-1] = argumentos[i];
}
retorne isto.apply(obj, args);
};
}