Function.prototype의 적용 및 호출은 1999년에 출시된 ECMA262 Edition3에만 추가되었습니다(ECMA262 Edition2는 1998년에 출시되었습니다). IE5.01(JScript 5.0) 등 이전 브라우저에서는 적용 및 호출 기능이 없습니다. 이로 인해 몇 가지 호환성 문제가 발생합니다. 수정 사항은 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
if(!Function.prototype.apply){
Function.prototype.apply = 함수(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 = 함수(obj){
var i = 1, args = [];
for( len=arguments.length; i<len; i++ ){
인수[i-1] = 인수[i];
}
return this.apply(obj, args);
};
}