ก่อนจะพูดถึงความแตกต่าง เรามาทำความเข้าใจ Primitive Data Types ก่อน Primitive กำหนดค่าที่ไม่เปลี่ยนแปลงได้ (immutable) และถูกนำเข้ามาโดยมาตรฐาน ECMAScript ล่าสุด
JavaScript ทำงานกับ primitive data types 3 ชนิดหลัก:
- Numbers (เช่น 3, 310.20)
- Strings (เช่น "This text string")
- Boolean (true หรือ false)
JavaScript ยังกำหนด trivial data types อีกสองชนิด คือ null และ undefined ซึ่งแต่ละตัวมีค่าเพียงค่าเดียว นอกเหนือจาก primitive types แล้ว JavaScript ยังรองรับ composite data type ที่เรียกว่า Object
Objects
ใน JavaScript ออบเจกต์ถือเป็นชุดของคุณสมบัติ (properties) ระบุคุณสมบัติด้วยคีย์-ค่า (key-value) มี 2 ประเภท:
Data Property
เชื่อมโยงคีย์กับค่า
ตัวอย่างเปรียบเทียบ String แบบ primitive กับ object:
Primitive Datatype:
var str = "Demo string!";
Object:
var str = new String("Demo string!");
Accessor Property
เชื่อมโยงคีย์กับฟังก์ชัน accessor (getter/setter) ใช้สำหรับเก็บค่า
ความแตกต่างสำคัญ
| ลักษณะ | Primitive | Object |
|---|---|---|
| Mutability | Immutable | Mutable |
| Comparison | By value | By reference |
| Memory | Stack | Heap |
| Methods | ไม่มี (auto-boxing) | มีเมธอดของตัวเอง |