Kata Kunci: argumentasi, callee, penelepon
argumen: mewakili parameter yang diteruskan ke fungsi
callee: Pernyataan yang mewakili fungsi dan badan fungsi
pemanggil: mewakili fungsi yang memanggil fungsi tersebut
argumen
Objek ini mewakili fungsi yang sedang dieksekusi dan parameter fungsi yang memanggilnya.
penelepon
Mengembalikan referensi ke fungsi yang memanggil fungsi saat ini.
nama fungsi.pemanggil
Objek functionName adalah nama fungsi yang dijalankan.
menjelaskan
Untuk fungsi, atribut pemanggil hanya ditentukan ketika fungsi tersebut dijalankan. Jika fungsi dipanggil dari tingkat atas, maka pemanggil berisi null. Jika atribut pemanggil digunakan dalam konteks string, hasilnya sama dengan functionName.toString, yaitu teks fungsi yang didekompilasi akan ditampilkan.
panggilan
Mengembalikan objek Fungsi yang sedang dieksekusi, yang merupakan isi objek Fungsi yang ditentukan.
[fungsi.]argumen.callee
Parameter fungsi opsional adalah nama objek Fungsi yang sedang dijalankan.
menjelaskan
Nilai awal atribut callee adalah objek Fungsi yang dijalankan.
Atribut callee adalah anggota objek argumen. Ini mewakili referensi ke objek fungsi itu sendiri, yang bermanfaat untuk rekursi fungsi anonim atau untuk memastikan enkapsulasi fungsi angka dari 1 sampai n. Properti ini hanya tersedia ketika fungsi terkait sedang dijalankan. Perlu juga dicatat bahwa callee memiliki atribut panjang, yang terkadang lebih baik untuk verifikasi. argument.length adalah panjang parameter sebenarnya, dan argument.callee.length adalah panjang parameter formal. Dari sini, Anda dapat menentukan apakah panjang parameter formal konsisten dengan panjang parameter sebenarnya saat memanggil.
Copy kode kodenya sebagai berikut:
<tipe skrip='teks/javascript'>
uji fungsi (x,y,z)
{
alert("Panjang parameter sebenarnya:"+arguments.length);
alert("Panjang parameter formal:"+arguments.callee.length);
alert("Panjang parameter formal:"+test.length);
peringatan(argumen[ 0 ])
alert(test[ 0 ]) // undefinisi tidak memiliki penggunaan seperti itu
}
//tes(1,2,3);
tes(1,2,3,4);
/*
* Argumen bukan array (kelas array)
*/
Array.prototipe.nilai diri = 1;
fungsi testAguments() {
alert( "argumen.nilaidiri= "+argumen.nilaidiri);
}
alert("Array.sefvalue="+Array baru().selfvalue);
ujiAgumen();
/**/ /*
* Mendemonstrasikan atribut pemanggil fungsi.
* Deskripsi: (fungsi saat ini). pemanggil: mengembalikan referensi ke fungsi yang memanggil fungsi saat ini
*/
fungsi pemanggilDemo() {
if (callerDemo.caller) {
var a = callerDemo.caller.argumen[ 0 ];
peringatan(a);
} kalau tidak {
alert( "ini adalah fungsi teratas " );
}
}
fungsi handleCaller() {
pemanggilDemo();
}
pemanggilDemo();
handleCaller("Parameter 1", "Parameter 2");
/**/ /*
* Mendemonstrasikan atribut callee dari fungsi tersebut.
* Deskripsi: argument.callee: Nilai awal adalah objek Fungsi yang dieksekusi, digunakan untuk fungsi anonim
*/
fungsi calleeDemo() {
alert(argumen.callee);
}
calleeDemo();
(function(arg0,arg1){alert("Jumlah bentuk adalah: "+arguments.callee.length)})();
/**/ /*
* Mendemonstrasikan penggunaan fungsi apply dan call
* Catatan: Fungsinya adalah untuk mengikat fungsi ke objek lain untuk dijalankan. Satu-satunya perbedaan antara keduanya adalah cara mendefinisikan parameter:
* terapkan(Arg ini,argArray);
* panggilan(Arg ini[,arg1,arg2…] ]);
* Artinya, penunjuk ini di dalam semua fungsi akan diberi Arg ini
*/
fungsiObjekA() {
alert("Jalankan ObjectA() " );
peringatan(argumen[ 0 ]);
ini .hit = fungsi (pesan) {peringatan(pesan)}
ini .info = "Saya dari ObjectA"
}
fungsiObjekB() {
alert("Jalankan ObjectB() " );
// Panggil metode ObjectA(), dan semua ini di konstruktor ObjectA akan digantikan dengan ini di ObjectB.
ObjectA.apply( ini ,argumen); // ObjectA.panggilan(ini);
waspada(ini .info);
}
ObjekB('Parameter 0');
var value = "variabel global";
fungsi Obj() {
ini .value = "Objek!";
}
fungsi Kesenangan1() {
waspada( ini .nilai);
}
Kesenangan1();
Fun1.apply(jendela);
Fun1.apply(Obj baru());
</skrip>