Setiap fungsi berisi dua properti: panjang dan prototipe
Panjang: Jumlah parameter bernama yang ingin diterima fungsi saat ini
Prototipe: adalah cara nyata untuk menjaga semua kekuatan mereka
Salinan kode adalah sebagai berikut:
Function Saysname (Name) {
peringatan (nama);
}
jumlah fungsi (num1, num2) {
mengembalikan num1 + num2;
}
fungsi sayshi () {
peringatan ("Hai");
}
waspada (sayname.length); // 1 jumlah parameter
alert (sum.length); // 2 Jumlah parameter: 2
waspada (sayhi.length); // 0 tidak ada parameter
Setiap fungsi berisi dua metode non-weri: apply () dan call ()
Kedua metode memanggil fungsi dalam ruang lingkup tertentu, yang sebenarnya sama dengan mengatur nilai objek ini di badan fungsi
First Apply () menerima dua parameter: satu adalah ruang lingkup fungsi yang berjalan, dan yang lainnya adalah array parameter (dapat berupa instance array atau objek argumen)
Salinan kode adalah sebagai berikut:
jumlah fungsi (num1, num2) {
mengembalikan num1 + num2;
}
fungsi callum1 (num1, num2) {
return sum.apply (ini, argumen); // lulus dalam objek argumen
}
fungsi callum2 (num1, num2) {
return sum.apply (ini, [num1, num2]);
}
peringatan (callum1 (10, 10)); // 20
peringatan (callum2 (10, 20)); // 30
Kedua, parameter pertama dari metode panggilan tidak berubah. Apa yang berubah adalah bahwa parameter lain adalah parameter yang diteruskan, dan parameter yang diteruskan ke fungsi perlu terdaftar satu per satu.
Salinan kode adalah sebagai berikut:
jumlah fungsi (num1, num2) {
mengembalikan num1 + num2;
}
fungsi callum (num1, num2) {
return sum.call (ini, num1, num2);
}
peringatan (callum (10, 200));
Adapun metode mana yang lebih nyaman, itu sepenuhnya tergantung pada keinginan Anda. Jika tidak ada parameter, itu akan sama dengan menggunakan keduanya.
Namun, penampilan metode Apply dan panggilan jelas bukan hanya untuk cara menghapus parameter lambung.
Penggunaan nyata mereka terletak pada ruang lingkup yang digunakan oleh fungsi ekstensi.
Salinan kode adalah sebagai berikut:
window.color = "merah";
var o = {warna: "biru"};
fungsi katacolor () {
waspada (this.color);
}
waycolor (); // merah
waycolor.call (ini); // merah
waycolor.call (window); // merah
waycolor.call (o); // biru
Keuntungan terbesar menggunakan Apply dan Call untuk memperluas ruang lingkup adalah bahwa tidak perlu memiliki hubungan kopling dengan metode ini.
Ecmascript5 juga mendefinisikan metode: bind (). Metode ini membuat instance fungsi yang nilainya akan terikat pada nilai yang diteruskan ke fungsi BIND
Salinan kode adalah sebagai berikut:
window.color = "merah";
var o = {warna: "biru"};
fungsi katacolor () {
waspada (this.color);
}
var bindfun = waycolor.bind (o);
bindfun (); // biru
Di atas adalah semua tentang artikel ini, saya harap Anda bisa menyukainya.