1. Penelepon
Mengembalikan referensi ke fungsi yang memanggil fungsi saat ini.
functionName.caller
Objek FunctionName adalah nama fungsi yang dieksekusi.
menjelaskan
Untuk fungsi, atribut penelepon hanya didefinisikan ketika fungsi dieksekusi. Jika fungsi dipanggil oleh tingkat atas program JavaScript, maka penelepon berisi nol.
Contoh berikut menggambarkan penggunaan atribut penelepon:
Salinan kode adalah sebagai berikut:
function callerdemo () {
if (arguments.caller) {
var a = callerdemo.caller.toString ();
waspada (a);
} kalau tidak {
peringatan ("Ini adalah fungsi teratas");
}
}
function handlecaller () {
callerdemo ();
}
handlecaller ();
fungsi calleedemo () {
peringatan (argumen.callee);
}
calleedemo ();
2. Callee
Mengembalikan objek fungsi yang dieksekusi, yaitu tubuh objek fungsi yang ditentukan.
[Fungsi.] Argumen.Callee
Parameter fungsi opsional adalah nama objek fungsi yang saat ini dieksekusi.
menjelaskan
Nilai awal properti Callee adalah objek fungsi yang dieksekusi.
Properti Callee adalah anggota dari objek argumen, yang mewakili referensi ke objek fungsi itu sendiri, yang kondusif untuk rekursi fungsi anonim atau untuk memastikan enkapsulasi fungsi. Misalnya, perhitungan rekursif dari jumlah bilangan alami dari 1 hingga N dalam contoh berikut. Properti ini hanya tersedia ketika fungsi yang relevan sedang dieksekusi. Penting juga untuk dicatat bahwa Callee memiliki atribut panjang, yang terkadang lebih baik untuk verifikasi. Argumen. Panjang adalah panjang parameter aktual, dan argumen. Callee.length adalah panjang parameter formal. Ini dapat digunakan untuk menentukan apakah panjang parameter formal konsisten dengan panjang parameter aktual saat menelepon.
Contoh
Salinan kode adalah sebagai berikut:
// callee dapat mencetak dirinya sendiri
fungsi calleedemo () {
peringatan (argumen.callee);
}
// Digunakan untuk memverifikasi parameter
fungsi calleelengthDemo (arg1, arg2) {
if (arguments.length == arguments.callee.length) {
window.alert ("Verifikasi bahwa parameter formal dan parameter aktual sudah benar!");
kembali;
} kalau tidak {
peringatan ("Panjang argumen nyata:" +argumen.length);
alert ("Ukuran Panjang:" +Argumen.Callee.Length);
}
}
// Perhitungan Rekursif
var sum = function (n) {
if (n <= 0)
kembali 1;
kalau tidak
return n + argumen.callee (n - 1)
}
Fungsi rekursif yang lebih umum:
Salinan kode adalah sebagai berikut:
var sum = function (n) {
if (1 == n) return 1;
lain mengembalikan n + sum (n-1);
Ketika dipanggil: peringatan (jumlah (100));
Fungsi berisi referensi ke jumlah itu sendiri. Nama fungsi hanyalah nama variabel. Panggil jumlah di dalam fungsi setara dengan panggilan
Variabel global tidak dapat tercermin dengan baik dalam panggilan itu sendiri, dan menggunakan Callee akan menjadi metode yang lebih baik saat ini.