Penerapan dan pemanggilan Function.prototype hanya ditambahkan di ECMA262 Edition3 yang dirilis pada tahun 1999 (ECMA262 Edition2 dirilis pada tahun 1998). Di browser sebelumnya seperti IE5.01 (JScript 5.0), tidak ada apply dan call. Ini akan menyebabkan beberapa masalah kompatibilitas.
Copy kode kodenya sebagai berikut:
if(!Fungsi.prototipe.berlaku){
Fungsi.prototipe.berlaku = fungsi(obj, args){
obj = obj == undefinisi ? window : Object(obj);//obj dapat berupa tipe dasar js
var i = 0, ary = [], str;
jika(argumen){
for( len=args.panjang; i<len; i++ ){
ary[i] = "args[" + i + "]";
}
}
obj._apply = ini;
str = 'obj._apply(' + ary.join(',') + ')';
mencoba{
kembali eval(str);
}menangkap(e){
}Akhirnya{
hapus obj._apply;
}
};
}
if(!Fungsi.prototipe.panggilan){
Fungsi.prototipe.panggilan = fungsi(obj){
var i = 1, args = [];
for( len=argumen.panjang; i<len; i++ ){
args[i-1] = argumen[i];
}
kembalikan this.apply(obj, args);
};
}