Invokasi Fungsi dengan panggilan dan gunakan
Apabila menggunakan fungsi, pengaturcara sering menghadapi pilihan untuk menggunakan Function.prototype.apply() atau Function .prototype.call(). Artikel ini meneroka perbezaan dan kes penggunaan untuk kedua-dua kaedah.
apply() vs. call()
Perbezaan asas terletak pada cara mereka mengendalikan hujah fungsi:
Sintaksis
Method | Syntax |
---|---|
apply() | function.apply(thisArg, [arg1, arg2, ...]) |
call() | function.call(thisArg, arg1, arg2, ...) |
Mnemonik
Untuk mengingati perbezaannya:
Kes Penggunaan
Pertimbangan Prestasi
Kedua-dua kaedah mempunyai ciri prestasi yang serupa. Dalam ES6 dan kemudian, operator spread (...) boleh digunakan dengan call(), menyediakan alternatif yang lebih ringkas untuk digunakan().
Contoh
Pertimbangkan fungsi berikut:
function greet(name, occupation) { console.log(`Hello, my name is ${name} and I'm a ${occupation}.`); }
Menyebut fungsi menggunakan apply() dan call():
greet.apply(undefined, ["John", "engineer"]); greet.call(undefined, "Mary", "doctor");
Ini akan mengeluarkan:
Hello, my name is John and I'm a engineer. Hello, my name is Mary and I'm a doctor.
Atas ialah kandungan terperinci `call()` lwn. `apply()`: Bila Menggunakan Kaedah Invocation Fungsi Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!