เป้าหมาย: ชื่อแอตทริบิวต์ของ JS สามารถใช้กับตัวแปรได้
ตัวอย่างเช่น: วัตถุวัตถุ JS เมื่อกำหนดแอตทริบิวต์ให้กับวัตถุสามารถใช้วิธีการต่อไปนี้ได้
การคัดลอกรหัสมีดังนี้:
วัตถุ var;
Object.prop1 = "value1";
Object.prop2 = "value2";
วิธีการต่อไปนี้สามารถใช้:
การคัดลอกรหัสมีดังนี้:
Object.push ({prop1: "value1"});
Object.push ({prop2: "value2"});
ที่นี่สามารถใช้ prop1 เป็นชื่อแอตทริบิวต์หรือคำพูดสามารถเพิ่มได้เช่น:
การคัดลอกรหัสมีดังนี้:
Object.push ({"<span style =" font-family: Arial, Helvetica, sans-serif; "> prop1 </span>": "value1"});
ความหมายของนิพจน์นั้นเหมือนกันนั่นคือ Prop1 สามารถรับรู้ได้ว่าเป็นค่าคงที่เท่านั้นและแม้ว่าจะเป็นตัวแปร แต่ก็ไม่มีประโยชน์เช่น:
การคัดลอกรหัสมีดังนี้:
var prop1 = "prop2";
Object.push ({prop1: "<span style =" font-family: arial, helvetica, sans-serif; "> value1 </span>"});
จะเกิดอะไรขึ้นถ้าคุณเข้าถึง Prop2 ผ่านวัตถุเช่นนี้? ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
การแจ้งเตือน (<span style = "font-family: Arial, Helvetica, sans-serif;"> object.prop2) </span>
ไม่จำเป็นต้องถามแน่นอนว่ามันไม่ได้กำหนด แต่การเข้าถึง Object.prop1 คือ "value1"
เหตุผลได้รับการกล่าวถึง ไม่ว่าจะมีการเพิ่มเครื่องหมายใบเสนอราคาหรือไม่คุณลักษณะจะถือว่าเป็นค่าคงที่ ให้ฉันยกตัวอย่างอีกครั้ง:
การคัดลอกรหัสมีดังนี้:
var arr = [];
arr ['js'] = 'jQuery';
arr ['css'] = 'oocss';
var obj = {};
สำหรับ (var i ใน arr)
-
obj.i = arr [i];
-
การแจ้งเตือน (obj.js);
ผู้อ่านสงสัยว่าจะพิมพ์อะไรได้บ้าง?
แน่นอนว่ามันไม่ได้กำหนด
โปรดเดาอีกครั้งสิ่งที่จะพิมพ์ถ้าแจ้งเตือน (obj.i)?
แน่นอนว่ามันคือ OOCSS ทำไม? เพราะตอนนี้ OBJ มีคุณลักษณะเดียว I และผ่านสองลูปด้านหน้าของ OBJ.I ถูกเขียนทับด้านหลัง
หากมีข้อกำหนดคุณต้องเพิ่มแอตทริบิวต์แบบไดนามิกนั่นคือแอตทริบิวต์จะต้องเป็นตัวแปร เช่นเดียวกับในรหัสตัวอย่างข้างต้นการแจ้งเตือน (obj.js) ไม่ได้ไม่ได้กำหนด แต่เป็น jQuery จะแก้ไขได้อย่างไร?
การคัดลอกรหัสมีดังนี้:
var arr = [];
arr ['js'] = 'jQuery';
arr ['css'] = 'oocss';
var obj = {};
สำหรับ (var i ใน arr)
-
obj [i] = arr [i];
-
การแจ้งเตือน (obj.js);
มันง่ายมาก! ปฏิบัติต่อ Object OBJ เป็นอาร์เรย์และรองรับการใช้วิธีการที่คล้ายกับตัวห้อยเพื่อกำหนดแอตทริบิวต์และค่าแอตทริบิวต์ให้กับวัตถุ อย่างไรก็ตามวัตถุยังคงเป็นวัตถุและ OBJ.Length ไม่มีอยู่