Function.prototype の apply と call は、1999 年にリリースされた ECMA262 Edition3 でのみ追加されました (ECMA262 Edition2 は 1998 年にリリースされました)。 IE5.01 (JScript 5.0) などの以前のブラウザでは、apply と call はありません。これにより、いくつかの互換性の問題が発生します。修正は次のとおりです。
次のようにコードをコピーします。
if(!Function.prototype.apply){
Function.prototype.apply = function(obj, args){
obj = obj == 未定義 ? window : Object(obj);//obj は JS の基本型にすることができます
var i = 0、ary = []、str;
if(引数){
for( len=args.length; i<len; i++ ){
ary[i] = "args[" + i + "]";
}
}
obj._apply = これ;
str = 'obj._apply(' + ary.join(',') + ')';
試す{
eval(str)を返します;
}キャッチ(e){
}ついに{
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] = 引数[i];
}
return this.apply(obj, args);
};
}