Dalam ecmascript v3, kedua metode ini didefinisikan untuk prototipe fungsi. Fungsi kedua metode ini adalah sama: menggunakan dua metode ini dapat memanggil fungsi seperti memanggil metode objek lainnya. Kalimat ini disalin dari buku, setidaknya saya tidak mengerti apa artinya ini.
Mari kita bicara tentang sederhana dan mudah dimengerti. Mari kita lihat kodenya:
Salinan kode adalah sebagai berikut:
PENDAHULUAN FUNGSI (Nama, Usia)
{
document.write ("Nama saya adalah"+name+". I Am"+usia);
}
var p = orang baru ();
PENDAHULUAN.CALL (P, "WINDKING", 20);
Mari kita bicara tentang kode di atas. Setelah menggunakan panggilan, pengantar menjadi metode p. Saya ingin tahu apakah Anda mengerti ini? Menggunakan metode panggilan, kode di atas setara dengan kode ini:
Salinan kode adalah sebagai berikut:
Fungsi Orang (Nama, Usia)
{
this.name = name;
this.age = usia;
this.introduce = function () {
document.write ("Nama saya adalah"+name+". I Am"+usia);
};
}
Apakah Anda mengerti artinya? Terapkan fungsi yang sama.
Oke, tidak peduli apa metode ini dapat digunakan dalam praktik, mari kita bicara tentang tata bahasa terlebih dahulu.
Panggilan menerima setidaknya satu parameter. Parameter pertama panggilan mengacu pada objek yang Anda butuhkan. Misalnya, dalam contoh di atas, metode pengantar berharap dapat dipanggil oleh objek p, jadi p digunakan sebagai parameter pertama panggilan. Jumlah parameter yang tersisa adalah sewenang -wenang, dan digunakan sebagai parameter dari metode pengantar. Urutan dalam urutan yang dinyatakan oleh parameter perkenalan. Misalnya, perkenalan. Apakah kamu mengerti? Ingatlah bahwa urutan parameter yang masuk harus konsisten dengan urutan parameter deklarasi urutan fungsi.
Setelah memahami panggilan, metode Apply mudah dimengerti. Satu -satunya perbedaan antara Apply dan Call adalah bahwa panggilan menerima setidaknya satu parameter, sementara Apply hanya menerima dua parameter. Parameter pertama sama dengan panggilan, dan parameter kedua adalah set dengan subskrip. Misalnya, pengantar.call (p, "windking", 20) dapat ditulis ulang menjadi pengantar. Apply (p, ["windking", 20]). Apakah Anda mengerti kali ini?
Jadi apa saja penggunaan kedua metode ini? Jika kita hanya ingin menerapkan fungsi di atas, bukankah lebih baik menerapkan pengantar sebagai manusia?
Saya meringkas aplikasi menjadi dua:
1. Metode Berbagi. Mari kita lihat kode terlebih dahulu:
Salinan kode adalah sebagai berikut:
PENDAHULUAN FUNGSI (Nama, Usia)
{
document.write ("Nama saya adalah"+name+". I Am"+usia);
}
Ini adalah metode pengenalan diri. Sekarang katakanlah kita memiliki kelas anak laki -laki dan kelas perempuan (saya hanya untuk demonstrasi di sini, dalam praktiknya, kelas orang tua orang akan digunakan), karena perkenalan mereka sama, sehingga kami dapat berbagi metode ini.
Salinan kode adalah sebagai berikut:
function boy ()
{
this.boyintroduce = function () {
PENDAHULUAN.CALL (Ini, Nama, Usia);
};
}
Demikian pula, hal yang sama berlaku pada anak perempuan, sehingga kita dapat menghindari kode menulis. Sebenarnya, ini agak dibuat-buat, karena kita bisa menulisnya sebagai:
Salinan kode adalah sebagai berikut:
function boy ()
{
this.boyintroduce = function () {
Pendahuluan (Nama, Usia);
}
}
Tetapi saat ini, jika kita menggunakan Apply, itu akan terlihat lebih sederhana:
Salinan kode adalah sebagai berikut:
function boy ()
{
this.boyintroduce = function () {
PENDAHULUAN.Apply (ini, argumen);
};
}
Bukankah lebih sederhana? Jika ada banyak parameter, maka jangan Anda perlu menulis serangkaian parameter padat seperti itu!
2. Panggilan domain silang
Lihat contoh sederhana (hanya untuk demonstrasi, tidak ada nilai):
Salinan kode adalah sebagai berikut:
Function Boy (nama, usia)
{
this.boyintroduce = function () {
document.write ("Nama saya adalah"+name+". I Am"+usia);
}
}
Function Girl (nama, usia)
{
}
Ini adalah kelas laki -laki dan perempuan, dan kemudian kami menulis kode berikut:
var b = new boy ("windking", 20);
B.BoyTroduce ();
Tidak ada keberatan untuk ini. Misalkan ada seorang gadis yang ingin memperkenalkan dirinya suatu hari dan hanya menggunakannya secara kebetulan, maka tidak perlu bagi saya untuk memodifikasi kelas gadis, karena gadis -gadis lain pemalu dan tidak ingin memperkenalkan diri. Kemudian saya bisa melakukan ini saat ini.
var g = gadis baru ("xuan", 22);
PENDAHULUAN.CALL (G, "Xuan", 22);
3. Penggunaan Nyata - Warisan
Oke, di atas semua trik kecil, dan itu bukan tempat keanggunan. Di bawah ini adalah panggilan dan berlaku yang paling banyak digunakan, yang digunakan untuk warisan struktural.