Apply และการเรียกใช้ Function.prototype ถูกเพิ่มใน ECMA262 Edition3 ที่เปิดตัวในปี 1999 เท่านั้น (ECMA262 Edition2 เปิดตัวในปี 1998) ในเบราว์เซอร์รุ่นก่อนหน้าเช่น IE5.01 (JScript 5.0) ไม่มีการใช้และการโทร ซึ่งจะทำให้เกิดปัญหาความเข้ากันได้บางประการ ต่อไปนี้คือการแก้ไข:
คัดลอกรหัสรหัสดังต่อไปนี้:
ถ้า(!Function.prototype.apply){
Function.prototype.apply = ฟังก์ชั่น (obj, args) {
obj = obj == undefinition ? window : Object(obj);//obj สามารถเป็นประเภทพื้นฐาน js ได้
var i = 0, ary = [], str;
ถ้า (หาเรื่อง){
สำหรับ( len=args.length; i<len; i++ ){
ary[i] = "args[" + i + "]";
-
-
obj._apply = นี้;
str = 'obj._apply(' + ary.join(',') + ')';
พยายาม{
ส่งคืนการประเมิน (str);
} จับ (จ) {
}ในที่สุด{
ลบ obj._apply;
-
-
-
ถ้า(!Function.prototype.call){
Function.prototype.call = ฟังก์ชั่น (obj) {
var i = 1, args = [];
สำหรับ( len=arguments.length; i<len; i++ ){
args[i-1] = ข้อโต้แย้ง[i];
-
ส่งคืน this.apply (obj, args);
-
-