1. Definisi Metode
Metode panggilan:
Sintaks: Call ([Thisobj [, arg1 [, arg2 [, [, .Argn]]]]])
Definisi: Panggil metode objek untuk mengganti objek saat ini dengan objek lain.
menjelaskan:
Metode panggilan dapat digunakan untuk memanggil metode alih -alih objek lain. Metode panggilan mengubah konteks objek suatu fungsi dari konteks awal ke objek baru yang ditentukan oleh ThisoBJ.
Jika parameter ini tidak disediakan, objek global digunakan sebagai ThisOBJ.
Terapkan metode:
Sintaks: Terapkan ([Thisobj [, Argarray]])
Definisi: Terapkan satu metode objek tertentu dan ganti objek saat ini dengan objek lain.
menjelaskan:
Jika Argarray bukan array yang valid atau bukan objek argumen, tipeError akan dihasilkan.
Jika tidak ada argumen yang disediakan, objek global akan digunakan sebagai hal ini dan tidak dapat disahkan argumen apa pun.
2. Contoh umum
A.
Salinan kode adalah sebagai berikut:
fungsi add (a, b)
{
waspada (a+b);
}
fungsi sub (a, b)
{
Peringatan (AB);
}
add.call (sub, 3,1);
Arti dalam contoh ini adalah mengganti sub dengan add, add.call (sub, 3,1) == Tambah (3,1), sehingga hasil yang berjalan adalah: waspada (4); // Catatan: Fungsi dalam JS sebenarnya adalah objek, dan nama fungsi adalah referensi ke objek fungsi.
B.
Salinan kode adalah sebagai berikut:
function hewan () {
this.name = "hewan";
this.showname = function () {
waspada (this.name);
}
}
function cat () {
this.name = "cat";
}
var hewan = hewan baru ();
var kucing = kucing baru ();
// Melalui metode panggilan atau terapkan, metode yang ditampilkan () yang awalnya milik objek hewan diserahkan ke objek kucing untuk digunakan.
// Hasil inputnya adalah "kucing"
animal.showname.call (kucing, ",");
//animal.showname.apply (cat, []);
Panggilan berarti menempatkan metode hewan pada kucing untuk dieksekusi. Ternyata kucing tidak memiliki metode yang ditampilkan (). Sekarang, meletakkan metode hewani ditampilkan () pada kucing untuk dieksekusi, jadi ini nama harus kucing
C. Sadari warisan
Salinan kode adalah sebagai berikut:
fungsi hewan (nama) {
this.name = name;
this.showname = function () {
waspada (this.name);
}
}
function cat (name) {
Animal.call (ini, nama);
}
var kucing = kucing baru ("kucing hitam");
cat.showname ();
Animal.call (ini) berarti menggunakan objek hewan alih -alih objek ini. Lalu jangan ada semua sifat dan metode hewan di Cat? Objek kucing dapat secara langsung memanggil metode dan sifat hewan.
D. Warisan berganda
Salinan kode adalah sebagai berikut:
fungsi class10 ()
{
this.showsub = fungsi (a, b)
{
Peringatan (AB);
}
}
fungsi class11 ()
{
this.showadd = fungsi (a, b)
{
waspada (a+b);
}
}
fungsi class2 ()
{
Class10.call (ini);
Class11.call (ini);
}
Ini sangat sederhana, menggunakan dua panggilan untuk mencapai banyak warisan
Tentu saja, ada metode lain untuk mewarisi JS, seperti menggunakan rantai prototipe, yang tidak termasuk dalam ruang lingkup artikel ini, tetapi hanya menjelaskan penggunaan panggilan di sini. Berbicara tentang panggilan, tentu saja ada juga berlaku. Kedua metode ini pada dasarnya berarti hal yang sama. Perbedaannya adalah bahwa parameter panggilan kedua dapat berupa jenis apa pun, sedangkan parameter kedua Apply harus merupakan array atau argumen
Dan Callee, penelepon ..