Kaedah Invokasi dalam JavaScript: Meneroka apply() vs. call()
Apabila menggunakan fungsi dalam JavaScript, anda mempunyai dua kaedah utama di pelupusan anda: apply() dan call(). Kedua-duanya membenarkan anda melaksanakan fungsi dengan nilai ini yang ditentukan, tetapi ia berbeza dalam cara argumen dihantar.
apply(thisValue, argumentsArray)
- Constructs tatasusunan daripada argumentsArray yang disediakan.
- Memanggil fungsi dengan thisValue dan elemen tatasusunan sebagai hujah individu.
- Contoh:
const func = function() {
console.log("Hello world!");
};
func.apply(null, ["John", 35]); // Invokes "Hello world!" and logs "John" and 35.
Salin selepas log masuk
call(thisValue, arg1, arg2, ...argN)
- Melayan hujah sebagai individu parameter.
- Memanggil fungsi dengan thisValue yang ditentukan dan argumen yang disediakan sebagai nilai berasingan.
- Contoh:
func.call(null, "John", 35); // Invokes "Hello world!" and logs "John" and 35.
Salin selepas log masuk
Mnemonik:
-
Mohon: A
untuk susunan argumen.-
Panggil: C
untuk argumen yang dipisahkan koma.
Perbezaan Prestasi:
- Secara amnya terdapat perbezaan prestasi yang boleh diabaikan antara apply() dan call().
- Walau bagaimanapun, apply() mungkin lebih pantas sedikit apabila berurusan dengan sejumlah besar hujah.
Kes Penggunaan Terbaik:
-
Gunakan apply():
Apabila anda mempunyai pelbagai hujah yang anda mahu hantar ke fungsi, terutamanya apabila bilangan argumen tidak diketahui terlebih dahulu.-
Gunakan panggilan():
Apabila anda ingin menghantar argumen individu kepada fungsi dan mempunyai lebih kawalan ke atas susunannya .
Tambahan ES6:
- Dalam ES6, anda boleh menggunakan operator spread dengan call() untuk menyebarkan tatasusunan ke dalam argumen individu.
-
Contoh:
func.call(null, ...["John", 35]); // Same as func.apply(null, ["John", 35]).
Salin selepas log masuk
Atas ialah kandungan terperinci JavaScript `apply()` lwn. `call()`: Bilakah Saya Perlu Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!