(i) วิธีการเลือกแบบไดนามิกและแอตทริบิวต์
ในการทำงานจริงเรามักจะพบกับสถานการณ์นี้: เรียกหนึ่งในสองวิธี [1] ตามเงื่อนไขที่แน่นอนหรืออ่านและเขียนการดำเนินการในหนึ่งในสองแอตทริบิวต์ [2] รหัสต่อไปนี้แสดงสิ่งนี้:
การคัดลอกรหัสมีดังนี้:
ถ้า (เงื่อนไข) {
myobj.method1 (Somearg);
} อื่น {
myobj.method2 (somearg);
-
JavaScript จัดเตรียมไวยากรณ์อย่างง่ายที่ใช้ตัวดำเนินการแบบวงเล็บเหลี่ยม ([]) เพื่อเลือกวิธีการและคุณสมบัติแบบไดนามิก ดังที่แสดงในรหัสต่อไปนี้ JavaScript มีไวยากรณ์การเข้าถึงสมาชิกสองคนเทียบเท่า (คุณสมบัตินี้เป็นเรื่องธรรมดาในภาษาไดนามิก):
obj [ExpressionResultingInMemberName] == obj.membername
หากคุณใช้ตัวห้อยจำนวนเต็มเพื่อเข้าถึงองค์ประกอบในอาร์เรย์คุณได้เริ่มใช้ตัวดำเนินการแบบวงเล็บเหลี่ยมเพื่อทำการเลือกสมาชิกแบบไดนามิก นี่เป็นเพราะวัตถุอาร์เรย์มีแอตทริบิวต์ (และแอตทริบิวต์ความยาว) ที่ตั้งชื่อตามตัวเลขตัวห้อย อย่างไรก็ตาม JavaScript ไม่อนุญาตให้คุณเข้าถึงคุณสมบัติเหล่านี้โดยตรงโดยใช้ตัวดำเนินการ DOT (.) ดังนั้น MyArray.0 จึงผิดกฎหมายทางไวยากรณ์ (มันเป็นความอัปยศมันเป็นไวยากรณ์ที่ยอดเยี่ยม)
เหตุใดตัวดำเนินการวงเล็บเหลี่ยมจึงมีประสิทธิภาพมากกว่าสัญกรณ์ DOT Operator นี่เป็นเพราะคุณสามารถเข้าถึงสมาชิกของวัตถุโดยใช้เนื้อหาใด ๆ ที่แสดงชื่อสมาชิกในวงเล็บเหลี่ยม สิ่งเหล่านี้รวมถึงตัวอักษรตัวแปรที่มีชื่อสมาชิกชุดค่าผสมชื่อ (ส่วนใหญ่การประกบสตริง) และการเลือกอย่างรวดเร็วหาก/จากนั้นการเลือกโดยใช้ตัวดำเนินการแบบ ternary (เงื่อนไข? ValueIftrue: ValueIFFALSE) เนื้อหาทั้งหมดนี้จะถูกประมวลผลเป็นสตริงจากนั้น JavaScript จะใช้สตริงนี้เพื่อค้นหาสมาชิกที่เกี่ยวข้อง
เนื่องจากฟังก์ชั่นใน JavaScript เป็นวัตถุจึงสามารถอ้างอิงได้เช่นเดียวกับค่าอื่น ๆ หากผลลัพธ์ของนิพจน์เป็นฟังก์ชั่นคุณสามารถเรียกมันโดยตรงกับตัวดำเนินการตัวยึดได้เช่นเดียวกับที่คุณเรียกฟังก์ชั่นโดยตรงด้วยชื่อฟังก์ชั่น
ควรสังเกตว่าหากคุณใช้เคล็ดลับนี้อย่างมากกับพารามิเตอร์ที่คุณส่งผ่านไปยังวิธีการวงเล็บที่สับสนอาจทำให้รหัสอ่านยากและมันฉลาดกว่าที่จะใช้โครงสร้างปกติถ้า/อื่น ๆ ในเวลานี้
(ii) คุณสมบัติและวิธีการสำรวจของวัตถุ JavaScript
JavaScript ใช้คำสั่ง FOR ในการวนซ้ำคุณสมบัติและวิธีการของวัตถุ สำหรับคำสั่งในการวนซ้ำผ่านวัตถุ JavaScript
ไวยากรณ์:
การคัดลอกรหัสมีดังนี้:
สำหรับ (valuename ใน objectName) {
// รหัส
-
โดยที่ Valuename เป็นชื่อตัวแปรซึ่งถือชื่อของคุณสมบัติหรือวิธีการ