เมธอด call() ใน JavaScript ใช้เพื่อ เรียกฟังก์ชันพร้อมกำหนดค่า this เอง และส่งอาร์กิวเมนต์ทีละตัว (ไม่ใช่อาร์เรย์เหมือน apply())
ไวยากรณ์
func.call(thisArg, arg1, arg2, ...)
ตัวอย่าง
การยืมเมธอด fullName จากออบเจ็กต์ person มาใช้กับ myObject:
<html>
<head>
<script>
var person = {
Name: "John",
Department: "Finance",
fullName: function() {
return this.Name + " is from " + this.Department + " Department";
}
};
var myObject = {
Name: "Amit",
Department: "Marketing"
};
var x = person.fullName.call(myObject);
document.write(x);
</script>
</head>
<body>
</body>
</html>
ผลลัพธ์
Amit is from Marketing Department
การใช้งานหลัก
- Method Borrowing: ใช้เมธอดของออบเจ็กต์หนึ่งกับอีกออบเจ็กต์หนึ่ง
- Constructor Chaining: เรียก constructor ของ parent class
- ตั้งค่า this ให้ชัดเจน: หลีกเลี่ยงปัญหา
thisใน callback หรือ event handler
เปรียบเทียบ: call() รับพารามิเตอร์ทีละตัว | apply() รับเป็นอาร์เรย์ | bind() คืนค่าเป็นฟังก์ชันใหม่พร้อมผูก this ไว้