0Pricing
JavaScript Academy · บทเรียน

ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน

แก้ปัญหาการแยกเมธอดด้วย call/apply/bind และเรียนรู้รูปแบบการประยุกต์ฟังก์ชันบางส่วนขนาดเล็กด้วย bind และฟังก์ชันลูกศรห่อหุ้ม

ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน เป็นบทเรียน JavaScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน JavaScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 3 บทเรียน

ภาพรวม

เป้าหมาย: คงค่า this ไว้หลังการดึงออก และกำหนดอาร์กิวเมนต์ล่วงหน้า

  • call(thisArg, a, b)
  • apply(thisArg, [a, b])
  • bind(thisArg, a) → ส่งคืนฟังก์ชันใหม่
  • การประยุกต์ใช้บางส่วนด้วย bind หรือฟังก์ชันลูกศรขนาดเล็ก
ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน — ภาพประกอบ 1

ข้อควรระวังในการดึงออก

การเรียกเป็น obj.method() จะทำงานได้ แต่การดึงฟังก์ชันออกจะทำให้อ็อบเจ็กต์หายไปและทำให้ 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)
ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน — ภาพประกอบ 2

call/apply สำหรับการเรียกครั้งเดียว

call และ apply ช่วยให้กำหนด this สำหรับการเรียกใช้เพียงครั้งเดียวได้

// 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"
ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน — ภาพประกอบ 3

bind สำหรับนำกลับมาใช้ซ้ำ

bind จะสร้างฟังก์ชันที่จดจำค่า this ไว้ คุณจึงเรียกใช้ได้หลายครั้งโดยไม่ต้องผูกค่าใหม่

// 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"
ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน — ภาพประกอบ 4

การประยุกต์ใช้บางส่วน (แบบง่าย)

ใช้ bind เพื่อกำหนดอาร์กิวเมนต์ตัวแรก ๆ ล่วงหน้า หรือใช้ ตัวห่อหุ้มด้วย arrow ขนาดเล็กเพื่อทำให้ค่าและ 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"
ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน — ภาพประกอบ 5

รูปแบบการใช้งานจริง

เคล็ดลับ:

  • เมธอดที่ถูกดึงออก: ใช้ bind เพียงครั้งเดียวแล้วนำกลับมาใช้ซ้ำ
  • การเรียกครั้งเดียว: ใช้ call/apply
  • ต้องการกำหนดอาร์กิวเมนต์ล่วงหน้าหรือไม่ ใช้ bind หรือตัวห่อหุ้มด้วย arrow ขนาดเล็ก
  • เขียนฟังก์ชันช่วยให้เล็กและตั้งชื่อให้ชัดเจน
ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน — ภาพประกอบ 6

แบบทดสอบ bind เทียบกับ call/apply

ตรวจสอบอย่างรวดเร็ว: คงค่า this และกำหนดอาร์กิวเมนต์ล่วงหน้า

ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน — ภาพประกอบ 7

สรุปทบทวน

สรุปทบทวน: การดึงออกทำให้สูญเสีย this ใช้ call/apply สำหรับการเรียกครั้งเดียว และใช้ bind เพื่อแก้ค่า this และนำกลับมาใช้ซ้ำ สำหรับการประยุกต์ใช้บางส่วน ให้ใช้ bind หรือฟังก์ชันลูกศรขนาดเล็กเพื่อกำหนดค่าล่วงหน้า

ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน — ภาพประกอบ 8

คำถามที่พบบ่อย

บทเรียน “ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส JavaScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน”

แก้ปัญหาการแยกเมธอดด้วย call/apply/bind และเรียนรู้รูปแบบการประยุกต์ฟังก์ชันบางส่วนขนาดเล็กด้วย bind และฟังก์ชันลูกศรห่อหุ้ม คุณปฏิบัติ JavaScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน JavaScript Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน JavaScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน

บทเรียน “ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน JavaScript Academy นี้ได้ไหม

ได้ บทเรียน JavaScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. this แบบเลกซิคัลกับแบบไดนามิก ทบทวนฟังก์ชันลูกศร
  2. ข้อควรระวังในการแยกเมธอดและการประยุกต์ฟังก์ชันบางส่วน
  3. ทางเลือกเชิงฟังก์ชัน — ส่งบริบท คลอเชอร์ และตัวช่วยขนาดเล็ก
← กลับไปที่ JavaScript Academy