สิ่งสำคัญที่ฉันต้องการแก้ปัญหาต่อไปนี้:
1. ความแตกต่างระหว่างการสมัครและการโทรคืออะไร
2. การใช้งานที่ชาญฉลาดอื่น ๆ (โดยปกติจะสามารถนำไปใช้กับสถานการณ์ใดได้)
ก่อนอื่นฉันพบคำจำกัดความของการสมัครและการโทรจากอินเทอร์เน็ตจากนั้นใช้ตัวอย่างเพื่ออธิบายความหมายของวิธีการทั้งสองนี้และวิธีการใช้งาน
ใช้: วิธีการสามารถจี้วิธีการของวัตถุอื่นและสืบทอดคุณสมบัติของวัตถุอื่น
ฟังก์ชัน Apply (OBJ, ARGS) สามารถรับพารามิเตอร์ได้สองพารามิเตอร์
OBJ: วัตถุนี้จะแทนที่วัตถุนี้ในคลาสฟังก์ชัน
Args: นี่คืออาร์เรย์มันจะถูกส่งผ่านเป็นอาร์กิวเมนต์ไปยังฟังก์ชัน (args-> อาร์กิวเมนต์)
การโทร: หมายถึงเช่นเดียวกับที่ใช้ แต่รายการพารามิเตอร์แตกต่างกัน
function.call (obj, param1, param2, …, paramn)
OBJ: วัตถุนี้จะแทนที่วัตถุนี้ในคลาสฟังก์ชัน
Params: นี่คือรายการพารามิเตอร์
ใช้ตัวอย่าง:
<script type = "text/javascript">/*กำหนดบุคคล*/ฟังก์ชันมนุษย์ (ชื่ออายุ) {this.name = name; this.age = age;} /*กำหนดคลาสนักเรียน* /functionStudent (ชื่อ, อายุ, เกรด) {person.apply (นี่, อาร์กิวเมนต์); this.grade = grade;} // สร้างนักเรียนชั้นเรียน var นักเรียน = นักเรียนใหม่ ("qian", 21, "ชั้นประถมศึกษาปีแรก"); // ทดสอบการแจ้งเตือน ("ชื่อ:"+student.name+"/n"+"อายุ:" student.age+"/n"+"เกรด เหตุใดคุณลักษณะทั้งสองนี้จึงมีค่า? นี่คือความมหัศจรรย์ของการใช้งาน </script>การวิเคราะห์: บุคคลใช้ (สิ่งนี้, ข้อโต้แย้ง);
สิ่งนี้: เมื่อสร้างวัตถุมันหมายถึงนักเรียน
ข้อโต้แย้ง: เป็นอาร์เรย์นั่นคือ ["Qian", "21", "ชั้นประถมศึกษาปีแรก"];
กล่าวอีกนัยหนึ่งในแง่ของคนธรรมดานั่นคือ: ใช้นักเรียนเพื่อดำเนินการเนื้อหาของชั้นเรียนบุคคล มีข้อความเช่นนี้ชื่อในชั้นเรียนบุคคลเพื่อให้แอตทริบิวต์ถูกสร้างขึ้นในวัตถุนักเรียน
ตัวอย่างการโทร
ในฟังก์ชั่น Studen คุณสามารถปรับเปลี่ยนการใช้งานต่อไปนี้:
person.call (นี่, ชื่อ, อายุ);
ความแตกต่าง
เมื่อให้พารามิเตอร์วัตถุถ้ารูปแบบพารามิเตอร์เป็นอาร์เรย์ตัวอย่างเช่นอาร์กิวเมนต์พารามิเตอร์จะถูกส่งผ่านในตัวอย่างการใช้พารามิเตอร์นี้เป็นประเภทอาร์เรย์และเมื่อโทรหาบุคคลรายการพารามิเตอร์จะสอดคล้องกับเดียวกัน (นั่นคือสองหลักแรกของบุคคลและรายการพารามิเตอร์ของนักเรียนมีความสอดคล้อง) หากรายการพารามิเตอร์ของบุคคลของฉันเป็นเช่นนี้ (อายุ, ชื่อ) และรายการพารามิเตอร์ของนักเรียนคือ (ชื่อ, อายุ, เกรด) สิ่งนี้สามารถทำได้โดยการโทรนั่นคือการระบุตำแหน่งของค่าที่สอดคล้องกันโดยตรงของรายการพารามิเตอร์ (person.call (นี่, อายุ, ชื่อ, เกรด);
การใช้งานที่ชาญฉลาดอื่น ๆ
ผู้คนอย่างระมัดระวังอาจสังเกตเห็นว่าเมื่อฉันเรียกวิธีการใช้พารามิเตอร์แรกคือวัตถุ (นี้) และพารามิเตอร์ที่สองคือคอลเลกชันอาร์เรย์
เมื่อโทรหาบุคคลสิ่งที่เขาต้องการไม่ใช่อาร์เรย์ แต่ทำไมเขาถึงให้อาร์เรย์ฉันยังสามารถแยกวิเคราะห์อาร์เรย์เป็นพารามิเตอร์เดียวได้
นี่คือการใช้งานที่ชาญฉลาด คุณสามารถแปลงอาร์เรย์เป็นรายการพารามิเตอร์โดยค่าเริ่มต้น ([param1, param2, param3] เป็น param1, param2, param3) หากเราใช้โปรแกรมเพื่อใช้การใช้งานการแทนที่แต่ละรายการในอาร์เรย์ด้วยรายการพารามิเตอร์อาจใช้เวลาสักครู่ ด้วยความช่วยเหลือของคุณลักษณะนี้เรามีวิธีการที่มีประสิทธิภาพดังต่อไปนี้:
a) Math.max สามารถบรรลุรายการที่ใหญ่ที่สุดในอาร์เรย์
เนื่องจากพารามิเตอร์ math.max ไม่รองรับ math.max ([param1, param2]) นั่นคืออาร์เรย์
อย่างไรก็ตามรองรับ math.max (param1, param2, param3 ... ) ดังนั้นคุณสามารถแก้ปัญหาของ var max = math.max.apply (null, array) ตามคุณสมบัติของการใช้งานตอนนี้เพื่อให้คุณสามารถรับรายการที่ใหญ่ที่สุดในอาร์เรย์ได้อย่างง่ายดาย
(ใช้จะแทนที่ชุดประกอบอาร์เรย์ด้วยพารามิเตอร์หนึ่งตัวและส่งผ่านไปยังวิธีการหลังจากนั้น)
เมื่อมีการเรียกส่วนนี้พารามิเตอร์แรกจะได้รับค่าว่าง นี่เป็นเพราะไม่มีวัตถุที่จะเรียกวิธีนี้ ฉันแค่ต้องใช้วิธีนี้เพื่อช่วยฉันคำนวณและรับผลลัพธ์ที่ส่งคืน ดังนั้นฉันจึงผ่าน Null ไปโดยตรง
b) Math.min สามารถบรรลุรายการที่เล็กที่สุดในอาร์เรย์
นอกจากนี้ยังเหมือนกับสูงสุด
var min = math.min.apply (null, array);
c) array.prototype.push สามารถใช้การรวมกันของสองอาร์เรย์
วิธีการกดไม่ได้ให้อาร์เรย์แบบพุช แต่ให้ push (param1, param, … paramn) เพื่อให้คุณสามารถติดตั้งและแทนที่อาร์เรย์โดยการสมัครนั่นคือ:
vararr1 = อาร์เรย์ใหม่ ("1", "2", "3"); vararr2 = อาร์เรย์ใหม่ ("4", "5", "6"); array.prototype.push.apply (arr1, arr2);นอกจากนี้ยังสามารถเข้าใจได้ด้วยวิธีนี้ ARR1 เรียกวิธีการพุชและพารามิเตอร์จะถูกแทนที่โดยการใช้ชุดประกอบอาร์เรย์ลงในชุดของรายการพารามิเตอร์
ข้างต้นคือความเข้าใจอย่างเต็มที่เกี่ยวกับการเรียกอินพุตคีย์ที่ตัวแก้ไขนำมาให้คุณ ฉันหวังว่าทุกคนจะสนับสนุน wulin.com ~