تمت إضافة تطبيق واستدعاء Function.prototype فقط في ECMA262 Edition3 الذي تم إصداره في عام 1999 (تم إصدار ECMA262 Edition2 في عام 1998). في المتصفحات السابقة مثل IE5.01 (JScript 5.0)، لا يوجد تطبيق واستدعاء. سيؤدي هذا إلى بعض مشكلات التوافق. وإليك الإصلاحات:
انسخ رمز الكود كما يلي:
إذا(!Function.prototype.apply){
Function.prototype.apply = function(obj, args){
obj = obj == نافذة غير محددة: Object(obj);//obj يمكن أن يكون نوعًا أساسيًا من نوع js
var i = 0, ary = [], str;
إذا (الوسائط) {
for( len=args.length;i<len; i++ ){
ary[i] = "args[" + i + "]";
}
}
obj._apply = this;
str = 'obj._apply(' + ary.join(',') + ')';
يحاول{
تقييم الإرجاع(str);
}قبض(ه){
}أخيراً{
حذف obj._apply;
}
};
}
إذا(!Function.prototype.call){
Function.prototype.call = وظيفة(obj){
var i = 1, args = [];
for( len=arguments.length;i<len; i++ ){
args[i-1] = الوسيطات[i];
}
إرجاع this.apply(obj, args);
};
}