JavaScript เป็นภาษา Object Oriented Programming (OOP) ภาษาโปรแกรมจะถูกเรียกว่าเชิงวัตถุได้ หากให้ความสามารถพื้นฐาน 4 ข้อต่อไปนี้แก่ผู้พัฒนา:
- Encapsulation (การห่อหุ้ม) – ความสามารถในการเก็บข้อมูลหรือเมธอดที่เกี่ยวข้องร่วมกันภายในอ็อบเจ็กต์
- Aggregation (การรวมกลุ่ม) – ความสามารถในการเก็บอ็อบเจ็กต์หนึ่งไว้ภายในอีกอ็อบเจ็กต์หนึ่ง
- Inheritance (การสืบทอด) – ความสามารถของคลาสในการพึ่งพาคลาสอื่น (หรือหลายคลาส) สำหรับพรอเพอร์ตี้และเมธอดบางส่วน
- Polymorphism (หลายรูปแบบ) – ความสามารถในการเขียนฟังก์ชันหรือเมธอดหนึ่งที่ทำงานได้หลายรูปแบบต่างกัน
อ็อบเจ็กต์ประกอบด้วยแอตทริบิวต์ (attributes) หากแอตทริบิวต์มีฟังก์ชัน จะถือว่าเป็น เมธอด (method) ของอ็อบเจ็กต์ มิฉะนั้นจะถือว่าเป็น พรอเพอร์ตี้ (property)
หมายเหตุสำคัญ
JavaScript ใช้ Prototype-based Inheritance ไม่ใช่ Class-based เหมือน Java หรือ C++ (แม้ ES6 จะเพิ่ม syntax class เข้ามา) ทำให้รูปแบบ OOP ใน JS มีความแตกต่างและยืดหยุ่นกว่า