1. คำจำกัดความของวิธีการ
วิธีการโทร:
ไวยากรณ์: การโทร ([thisobj [, arg1 [, arg2 [, [, .argn]]]]]])
คำจำกัดความ: เรียกวิธีการของวัตถุเพื่อแทนที่วัตถุปัจจุบันด้วยวัตถุอื่น
ภาพประกอบ:
วิธีการโทรสามารถใช้เรียกวิธีการแทนวัตถุอื่น วิธีการโทรเปลี่ยนบริบทวัตถุของฟังก์ชันจากบริบทเริ่มต้นเป็นวัตถุใหม่ที่ระบุโดย Thisobj
หากไม่มีการจัดเตรียมพารามิเตอร์ ThisOBJ วัตถุส่วนกลางจะถูกใช้เป็น ThisObj
ใช้วิธีการ:
ไวยากรณ์: ใช้ ([thisobj [, argarray]])
คำจำกัดความ: ใช้วิธีหนึ่งของวัตถุบางอย่างและแทนที่วัตถุปัจจุบันด้วยวัตถุอื่น
ภาพประกอบ:
หาก Argarray ไม่ใช่อาร์เรย์ที่ถูกต้องหรือไม่ใช่วัตถุอาร์กิวเมนต์ประเภท TypeError จะถูกสร้างขึ้น
หากไม่มีการให้ข้อโต้แย้งวัตถุทั่วโลกจะถูกใช้เป็น thisobj และไม่สามารถผ่านข้อโต้แย้งใด ๆ ได้
2. ตัวอย่างทั่วไป
.
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นเพิ่ม (a, b)
-
การแจ้งเตือน (a+b);
-
ฟังก์ชันย่อย (a, b)
-
การแจ้งเตือน (AB);
-
add.call (ย่อย, 3,1);
ความหมายในตัวอย่างนี้คือการแทนที่ย่อยด้วย add, add.call (sub, 3,1) == เพิ่ม (3,1) ดังนั้นผลลัพธ์ที่รันคือ: แจ้งเตือน (4); // หมายเหตุ: ฟังก์ชั่นใน JS เป็นวัตถุจริง ๆ และชื่อฟังก์ชันคือการอ้างอิงถึงวัตถุฟังก์ชัน
ข.
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นสัตว์ () {
this.name = "Animal";
this.showname = function () {
การแจ้งเตือน (this.name);
-
-
ฟังก์ชัน cat () {
this.name = "cat";
-
Var Animal = สัตว์ใหม่ ();
var cat = cat ใหม่ ();
// ผ่านวิธีการโทรหรือใช้วิธีการแสดง () เดิมของวัตถุสัตว์จะถูกส่งไปยังแมววัตถุเพื่อใช้งาน
// ผลลัพธ์อินพุตคือ "CAT"
Animal.showname.call (cat, ",");
//animal.showname.apply (cat, []);
การโทรหมายถึงการใส่วิธีการสัตว์บนแมวเพื่อดำเนินการ ปรากฎว่า CAT ไม่มีวิธีการแสดง () ตอนนี้การวางวิธีการแสดงสัตว์ () บนแมวเพื่อดำเนินการดังนั้นสิ่งนี้ชื่อควรเป็นแมว
ค. ตระหนักถึงมรดก
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นสัตว์ (ชื่อ) {
this.name = ชื่อ;
this.showname = function () {
การแจ้งเตือน (this.name);
-
-
ฟังก์ชั่นแมว (ชื่อ) {
Animal.call (ชื่อนี้);
-
var cat = แมวใหม่ ("แมวดำ");
cat.showname ();
Animal.call (นี่) หมายถึงการใช้วัตถุสัตว์แทนวัตถุนี้ ถ้าอย่างนั้นไม่มีคุณสมบัติและวิธีการของสัตว์ในแมวใช่ไหม วัตถุแมวสามารถเรียกวิธีการและคุณสมบัติของสัตว์ได้โดยตรง
d. มรดกหลายอย่าง
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น Class10 ()
-
this.showsub = function (a, b)
-
การแจ้งเตือน (AB);
-
-
ฟังก์ชั่น Class11 ()
-
this.showadd = function (a, b)
-
การแจ้งเตือน (a+b);
-
-
ฟังก์ชั่น Class2 ()
-
class10.call (นี่);
class11.call (นี่);
-
มันง่ายมากโดยใช้การโทรสองครั้งเพื่อให้ได้มรดกหลายครั้ง
แน่นอนว่ามีวิธีอื่น ๆ ในการสืบทอด JS เช่นการใช้โซ่ต้นแบบซึ่งไม่ได้ตกอยู่ในขอบเขตของบทความนี้ แต่อธิบายการใช้การโทรที่นี่เท่านั้น การพูดถึงการโทรแน่นอนว่ายังมี ทั้งสองวิธีนี้หมายถึงสิ่งเดียวกัน ความแตกต่างคือพารามิเตอร์ที่สองของการโทรสามารถเป็นประเภทใดก็ได้ในขณะที่พารามิเตอร์ที่สองของการสมัครจะต้องเป็นอาร์เรย์หรืออาร์กิวเมนต์
และ Callee ผู้โทร ..