Rumah >hujung hadapan web >tutorial js >Ringkasan kemahiran js inheritance call() dan apply() method_javascript

Ringkasan kemahiran js inheritance call() dan apply() method_javascript

WBOY
WBOYasal
2016-05-16 16:28:241625semak imbas

1. Definisi kaedah

kaedah panggilan:
Sintaks: panggil([thisObj[,arg1[, arg2[, [,.argN]]]]])
Definisi: Panggil kaedah objek untuk menggantikan objek semasa dengan objek lain.
Penerangan:
Kaedah panggilan boleh digunakan untuk memanggil kaedah bagi pihak objek lain. Kaedah panggilan menukar konteks objek fungsi daripada konteks awal kepada objek baharu yang ditentukan oleh thisObj.
Jika tiada parameter thisObj disediakan, objek Global digunakan sebagai thisObj.

kaedah pakai:
Sintaks: apply([thisObj[,argArray]])
Definisi: Gunakan kaedah objek untuk menggantikan objek semasa dengan objek lain.
Penerangan:
Jika argArray bukan tatasusunan yang sah atau bukan objek argumen, TypeError akan berlaku.
Jika argArray mahupun thisObj tidak disediakan, objek Global akan digunakan sebagai thisObj dan tiada parameter boleh dilalui.

2. Contoh biasa

a、

Salin kod Kod adalah seperti berikut:

fungsi tambah(a,b)
{
makluman(a b); }
fungsi sub(a,b)
{
makluman(a-b); }
add.call(sub,3,1);


Maksud contoh ini ialah menggantikan sub dengan add, add.call(sub,3,1) == add(3,1), jadi hasil yang dijalankan ialah: alert(4); Fungsi sebenarnya adalah objek, dan nama fungsi adalah rujukan kepada objek Fungsi.
b、

Salin kod Kod adalah seperti berikut: fungsi Haiwan(){ 
This.name = "Haiwan"; This.showName = function(){
makluman(nama.ini);
}  

fungsi Cat(){ 
This.name = "Kucing"; } 
var animal = new Animal(); var cat = new Cat(); //Melalui kaedah panggilan atau gunakan, kaedah showName() yang asalnya dimiliki oleh objek Animal diserahkan kepada objek kucing untuk digunakan. 
//Hasil input ialah "Kucing"
animal.showName.call(cat,",");
//animal.showName.apply(cat,[]);


panggilan bermaksud meletakkan kaedah haiwan pada kucing untuk pelaksanaan Pada asalnya, kucing tidak mempunyai kaedah showName() Kini, kaedah showName() haiwan diletakkan pada kucing untuk pelaksanaan, jadi nama ini sepatutnya menjadi Cat

c. Melaksanakan pewarisan


Salin kod

Kod adalah seperti berikut:

fungsi Kucing(nama){ 
Animal.call(ini, nama); } 
var cat = new Cat("Kucing Hitam"); 
cat.showName();



Animal.call(this) bermaksud menggunakan objek Animal dan bukannya objek ini. Bukankah Cat mempunyai semua sifat dan kaedah Animal The Cat boleh terus memanggil kaedah dan sifat Animal.

d. Warisan berbilang



Salin kod

Kod adalah seperti berikut:


fungsi Kelas10()
{
This.showSub = function(a,b)

makluman(a-b); }  
}
fungsi Kelas11()
{
This.showAdd = function(a,b)

makluman(a b); }  
}
fungsi Kelas2()
{
Class10.call(this);
Class11.call(this);
}


Ia sangat mudah, gunakan dua panggilan untuk mencapai berbilang warisan Sudah tentu, terdapat cara lain untuk mewarisi js, seperti menggunakan rantai prototaip Ini bukan dalam skop artikel ini, saya hanya menerangkan penggunaan panggilan di sini. Bercakap tentang panggilan, dan sudah tentu terpakai, kedua-dua kaedah ini pada asasnya bermaksud perkara yang sama Perbezaannya ialah parameter panggilan kedua boleh dari mana-mana jenis, manakala parameter kedua permohonan mestilah array, atau ia boleh menjadi argumen<.> Dan penerima, pemanggil..

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn