Programming Track
JavaScript
ES6+
Enhanced object literals
เรียนรู้ syntax เสริมสำหรับ object literal ที่ยังเกี่ยวข้องในบทนี้: Shorthand Properties และ Computed Property Names เพื่อเขียนโค้ดที่สั้นและอ่านง่ายขึ้น
Enhanced Object Literals คืออะไร?
ES6 เพิ่มความสามารถหลายอย่างให้กับการสร้าง object literal เพื่อให้เขียนได้สั้นและอ่านง่ายขึ้น ในบทนี้เราจะโฟกัส 2 อย่างที่ยังเหลืออยู่ในหมวดนี้: 1. **Shorthand Properties** — ถ้าชื่อตัวแปรตรงกับชื่อ property ไม่ต้องเขียนซ้ำ 2. **Computed Property Names** — ใช้ expression เป็นชื่อ property ด้วย `[...]`
Shorthand Properties
ถ้าชื่อตัวแปรตรงกับชื่อ property ที่ต้องการ — เขียนแค่ชื่อตัวแปรเดียวได้เลย ไม่ต้อง `key: value`
JS
const name = "Dara";
const age = 30;
// วิธีเดิม
const user1 = { name: name, age: age };
// Shorthand — ชื่อตรงกัน เขียนครั้งเดียว
const user2 = { name, age };
console.log(user1); // { name: "Dara", age: 30 }
console.log(user2); // { name: "Dara", age: 30 } — เหมือนกันทุกประการ
// ใช้งานจริง: รับค่าจาก function
function createProduct(id, title, price) {
return { id, title, price }; // shorthand ทั้งสามค่า
}Computed Property Names
ใช้ `[expression]` เป็นชื่อ property แบบ dynamic — ชื่อ property จะถูกคำนวณจาก expression ตอน runtime
JS
const key = "color";
const prefix = "user";
// วิธีเดิม — ต้องสร้าง object ก่อน แล้วค่อยเพิ่ม key
const obj1 = {};
obj1[key] = "red";
// Computed Property Names — ทำได้ใน object literal เลย
const obj2 = {
[key]: "red", // property ชื่อ "color"
[`${prefix}Name`]: "Lek", // property ชื่อ "userName"
};
console.log(obj2); // { color: "red", userName: "Lek" }
// ใช้งานจริง: สร้าง object จาก array ของ key
const fields = ["title", "body", "tags"];
const emptyForm = Object.fromEntries(fields.map(f => [f, ""]));
// { title: "", body: "", tags: "" }สรุป
- Shorthand Properties: { name } แทน { name: name } เมื่อชื่อตัวแปรตรงกับ property
- Computed Property Names: [expression] ใช้ตัวแปรหรือ expression เป็นชื่อ property
- syntax ที่เหลือในบทนี้ช่วยให้โค้ดสั้นลงและอ่านง่ายขึ้นโดยไม่เปลี่ยน behavior