Perangkap Pengekstrakan Kaedah, Penggunaan Separa
Baiki pengekstrakan kaedah dengan call/apply/bind dan pelajari corak penggunaan separa kecil dengan bind serta pembalut anak panah.
Perangkap Pengekstrakan Kaedah, Penggunaan Separa ialah pelajaran Akademi JavaScript percuma di CoddyKit. Ini ialah pelajaran 2 daripada 3. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi JavaScript, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi JavaScript merangkumi sejumlah 3 pelajaran.
Gambaran keseluruhan
Matlamat: Pastikan this kekal selepas pengekstrakan dan isikan argumen terlebih dahulu.
- call(thisArg, a, b)
- apply(thisArg, [a, b])
- bind(thisArg, a) → mengembalikan fungsi baharu
- Aplikasi separa dengan bind atau anak panah kecil

Perangkap pengekstrakan
Memanggil sebagai obj.method() berfungsi, tetapi mengekstrak fungsi menyebabkan objek hilang dan merosakkan this.
// Extraction loses this
const user = {
name: "Ayla",
label: function (prefix) {
return prefix + ":" + this.name;
}
};
console.log("method call:", user.label("Hi")); // "Hi:Ayla"
// Extract
const f = user.label;
console.log("extracted:", f("Hi")); // this is missing -> "Hi:undefined" (in strict mode this is undefined)

call/apply untuk sekali sahaja
call dan apply membolehkan anda menetapkan this untuk satu panggilan sahaja.
// Fix by passing this explicitly using call/apply
console.log("call :", f.call(user, "Hi")); // "Hi:Ayla"
console.log("apply:", f.apply(user, ["Yo"])); // "Yo:Ayla"

bind untuk guna semula
bind mencipta fungsi yang mengingati this. Panggil fungsi itu berkali-kali tanpa mengikatnya semula.
// bind returns a new function with this fixed
const bound = f.bind(user);
console.log("bound once:", bound("Hey")); // "Hey:Ayla"
console.log("bound again:", bound("Yo")); // "Yo:Ayla"

Aplikasi separa (mudah)
Gunakan bind untuk mengisi argumen awal terlebih dahulu, atau pembalut anak panah kecil untuk membekukan nilai dan this.
// Partial application: pre-fill arguments
function add(a, b, c) { return a + b + c; }
// Using bind: pre-fill a=10
const add10 = add.bind(null, 10);
console.log("add10(1,2):", add10(1, 2)); // 13
// Using an arrow wrapper: pre-fill prefix
const labelHi = function (obj) {
return function () { return obj.label("Hi"); };
}(user);
console.log("arrow partial:", labelHi()); // "Hi:Ayla"

Corak praktikal
Petua:
- Kaedah yang diekstrak: gunakan bind sekali dan guna semula.
- Panggilan sekali sahaja: gunakan call/apply.
- Perlu mengisi argumen terlebih dahulu? Gunakan bind atau pembalut anak panah kecil.
- Pastikan fungsi bantuan kecil dan namanya jelas.

Kuiz bind berbanding call/apply
Semakan pantas: Kekalkan this dan isi argumen terlebih dahulu.

Imbas kembali
Imbas kembali: Pengekstrakan menyebabkan this hilang. Gunakan call/apply untuk panggilan sekali sahaja, dan bind untuk membetulkan this serta guna semula. Untuk fungsi separa, gunakan bind atau anak panah kecil bagi mengisi nilai terlebih dahulu.

Pelajari JavaScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 59
- Pelajaran
- 200
Soalan Lazim
Adakah pelajaran “Perangkap Pengekstrakan Kaedah, Penggunaan Separa” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Akademi JavaScript, termasuk “Perangkap Pengekstrakan Kaedah, Penggunaan Separa”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Akademi JavaScript merangkumi sejumlah 3 pelajaran.
Apakah yang akan saya pelajari dalam “Perangkap Pengekstrakan Kaedah, Penggunaan Separa”?
Baiki pengekstrakan kaedah dengan call/apply/bind dan pelajari corak penggunaan separa kecil dengan bind serta pembalut anak panah. Anda berlatih Akademi JavaScript menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Akademi JavaScript?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi JavaScript di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 3.
Berapa lamakah pelajaran “Perangkap Pengekstrakan Kaedah, Penggunaan Separa” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Akademi JavaScript ini?
Ya. Setiap pelajaran Akademi JavaScript menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- this Leksikal berbanding Dinamik, Anak Panah Ditinjau Semula
- Perangkap Pengekstrakan Kaedah, Penggunaan Separa
- Alternatif Fungsian — hantar konteks, penutupan dan pembantu kecil