ใน JavaScript คุณสามารถอ่านและเขียนคุณสมบัติของวัตถุผ่านตัวดำเนินการ DOT " หรือตัวยึดวงเล็บ "[]":
การคัดลอกรหัสมีดังนี้:
var o = {x: 1, y: 2};
console.log (ox); // 1
console.log (o ["y"]); // 2
oy = 7;
console.log (o ["y"]); // 7
เป็นที่น่าสังเกตว่าหากมีการใช้ตัวดำเนินการวงเล็บประเภทค่าในตัวดำเนินการจะต้องเป็นสตริงหรือนิพจน์ที่สามารถแปลงเป็นสตริงได้:
การคัดลอกรหัสมีดังนี้:
console.log (o [y]); // ReferenceRoror: y ไม่ได้กำหนดไว้
var v = "y";
console.log (o [v]); // 7
ไม่เหมือนกับภาษา Java คุณสมบัติของวัตถุใน JavaScript สามารถเพิ่มหรือลบได้แบบไดนามิก เมื่อกำหนดคุณสมบัติหากไม่มีคุณสมบัติ JavaScript จะเพิ่มคุณสมบัตินี้ลงในวัตถุแบบไดนามิก:
การคัดลอกรหัสมีดังนี้:
Oz = 99;
console.log (o); // object {x = 1, y = 7, z = 99}
การอ่านทรัพย์สินในห่วงโซ่การสืบทอดต้นแบบ
วัตถุทั้งหมดใน JavaScript มีวัตถุต้นแบบต้นแบบและสืบทอดคุณสมบัติจากวัตถุต้นแบบ ดังนั้นคุณสมบัติของวัตถุใน JS จึงแบ่งออกเป็นสองประเภท:
1. ทรัพย์สินที่เป็นเจ้าของโดยวัตถุเอง ("ทรัพย์สินของตัวเอง")
2. คุณสมบัติที่สืบทอดมาจากวัตถุต้นแบบ
เมื่ออ่านคุณสมบัติของวัตถุกฎที่ปฏิบัติตามมีดังนี้:
1. ค้นหาคุณสมบัติที่ต้องอ่านจากคอลเลกชันคุณสมบัติของวัตถุ ("คุณสมบัติของตัวเอง"); หากสามารถค้นหาได้มันจะอ่านคุณสมบัติโดยตรงและส่งคืนค่า
2. หากคุณสมบัติไม่สามารถค้นหาได้จากคอลเลกชันคุณสมบัติของวัตถุ ("คุณสมบัติของตัวเอง") จากนั้นดำเนินการค้นหาจากห่วงโซ่ต้นแบบต้นแบบต้นแบบของวัตถุต่อไปจนกว่าจะมีการค้นหาคุณสมบัติและส่งคืนค่า
3. หากคุณสมบัติไม่สามารถค้นหาได้ในคอลเลกชันคุณสมบัติของวัตถุ ("คุณสมบัติของตัวเอง") และไม่สามารถค้นหาคุณสมบัติในวัตถุต้นแบบของวัตถุทั้งหมดได้
เขียนคุณสมบัติในห่วงโซ่การสืบทอดต้นแบบ
เมื่อเขียนถึงคุณสมบัติของวัตถุ JavaScript กฎที่ตามมามีดังนี้:
1. หากวัตถุนั้นมีคุณสมบัติและคุณสมบัติที่เขียนได้ให้เขียนค่าใหม่ไปยังคุณสมบัติ หากคุณสมบัติเป็นแบบอ่านอย่างเดียวจะมีการรายงานข้อผิดพลาด
2. หากวัตถุนั้นไม่มีคุณสมบัติและไม่มีอยู่ในวัตถุต้นแบบทั้งหมดให้เพิ่มคุณสมบัตินี้ลงในวัตถุ
3. หากวัตถุนั้นไม่มีคุณสมบัติ แต่คุณสมบัติมีอยู่ในวัตถุต้นแบบและเขียนได้แล้ว JS จะสร้างคุณสมบัตินี้ในวัตถุ นั่นคือวัตถุแทนที่คุณสมบัติในวัตถุต้นแบบ ค่าคุณสมบัตินี้ในวัตถุต้นแบบยังคงไม่เปลี่ยนแปลง
4. หากวัตถุนั้นไม่มีคุณสมบัติ แต่คุณสมบัติมีอยู่ในวัตถุต้นแบบและเป็นแบบอ่านอย่างเดียวจะมีการรายงานข้อผิดพลาด
5. หากวัตถุนั้นไม่มีคุณสมบัติ แต่วิธีการตั้งค่าของคุณสมบัติมีอยู่ในวัตถุต้นแบบของมัน JS จะเรียกวิธีการตั้งค่าในวัตถุต้นแบบ เป็นที่น่าสังเกตว่าเมื่อใช้วิธีการตั้งค่าหากเกี่ยวข้องกับการกำหนดตัวแปรการดำเนินการที่ได้รับมอบหมายจะดำเนินการกับวัตถุเองและวัตถุต้นแบบจะไม่เปลี่ยนแปลง สำหรับพฤติกรรมนี้สามารถเข้าใจได้ว่า: วัตถุสืบทอดฟังก์ชั่น setter จากต้นแบบและดำเนินการ
จากกฎข้างต้นเราสามารถพบได้ว่าหากการดำเนินการที่ได้รับมอบหมายให้กับคุณสมบัติสำเร็จแล้ววัตถุจะถูกแก้ไขในตอนท้ายเสมอและวัตถุต้นแบบต้นแบบจะไม่เปลี่ยนแปลง