ใน JavaScript มี 3 วิธีหลักในการเข้าถึงพร็อพเพอร์ตี้ของอ็อบเจกต์:
- Dot Notation (จุด) —
object.propertyใช้ได้เมื่อชื่อพร็อพเพอร์ตี้เป็นตัวระบุที่ถูกต้อง (ไม่มีช่องว่าง เริ่มต้นตัวอักษรหรือ _ หรือ $) - Bracket Notation (วงเล็บเหลี่ยม) —
object['property']ใช้ได้ทุกกรณี รองรับชื่อที่มีอักขระพิเศษ ตัวแปร หรือคำนำหน้าตัวเลข - Object Destructuring (การทำลายโครงสร้าง) —
const { property } = objectสกัดค่ามาเก็บในตัวแปรโดยตรง
ตัวอย่างโค้ด
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>เข้าถึงพร็อพเพอร์ตี้อ็อบเจกต์</title>
<style>
body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
.result, .sample { font-size: 18px; font-weight: 500; color: blueviolet; }
.sample { color: red; }
</style>
</head>
<body>
<h1>เข้าถึงพร็อพเพอร์ตี้ของอ็อบเจกต์ใน JavaScript</h1>
<div><pre class="sample">{ a: 22, b: 44 }</pre></div>
<div class="result"></div>
<button class="Btn">เข้าถึง</button>
<h3>กดปุ่มเพื่อทดสอบ 3 วิธีการเข้าถึง</h3>
<script>
const resEle = document.querySelector(".result");
const btnEle = document.querySelector(".Btn");
const obj = { a: 22, b: 44 };
btnEle.addEventListener("click", () => {
// 1. Dot notation
resEle.innerHTML += "obj.a = " + obj.a + "<br>";
// 2. Bracket notation
resEle.innerHTML += "obj['a'] = " + obj["a"] + "<br>";
// 3. Destructuring
const { a } = obj;
resEle.innerHTML += "{a} = obj → a = " + a + "<br>";
});
</script>
</body>
</html>
ผลลัพธ์

เมื่อกดปุ่ม "เข้าถึง":

เมื่อไหร่ควรใช้วิธีไหน?
| สถานการณ์ | วิธีที่แนะนำ |
|---|---|
| ชื่อพร็อพเพอร์ตี้คงที่ ตามกฎตัวระบุ | Dot notation (อ่านง่าย เร็วกว่าเล็กน้อย) |
| ชื่อพร็อพเพอร์ตี้มีช่องว่าง, อักขระพิเศษ, หรือเป็นตัวเลข | Bracket notation (บังคับ) |
| ชื่อพร็อพเพอร์ตี้อยู่ในตัวแปร | Bracket notation (บังคับ) |
| ต้องการสกัดหลายค่าพร้อมกัน | Destructuring (กระชับ อ่านง่าย) |
| ต้องการกำหนดค่าเริ่มต้นถ้าไม่มีพร็อพเพอร์ตี้ | Destructuring: const { x = 10 } = obj |
คำเตือน
การเข้าถึงพร็อพเพอร์ตี้ที่ไม่มีอยู่จะคืน undefined ไม่ได้โยน Error (ยกเว้น strict mode บางกรณี) ควรตรวจสอบด้วย obj?.prop (optional chaining) หรือ 'prop' in obj ก่อนใช้งาน