เทคนิคทางโปรแกรมมิ่งที่มุ่งหมายต่อเป้าหมาย ECMAScript

แนวทางที่มีเป้าหมายที่เป็นสิ่ง

วัตถุ

ECMA-262 กำหนดวัตถุ (object) ว่าเป็น "ชุดคุณสมบัติที่ไม่มีลำดับ ในแต่ละคุณสมบัติมีค่าเดี่ยวเพียงแค่หนึ่ง หรืออาจเป็นวัตถุหรือฟังก์ชัน" ในทางทฤษฎีนี้นี่หมายความว่าวัตถุเป็นลำดับค่าที่ไม่มีลำดับ

ถึงแม้ว่า ECMAScript จะมีการกำหนดวัตถุ แต่การกำหนดที่ทั่วไปของมันเกี่ยวข้องกับการแสดงทางคำว่า (noun) ของรหัส (person, place, or thing)

รูปแบบ

วัตถุทุกตัวจะมีการกำหนดโดยรูปแบบ และเราจะมองว่ารูปแบบนี้เป็นแบบฟอร์มวัตถุ รูปแบบนี้ไม่เพียงแค่กำหนดส่วนบุคคล (interface) ที่นักพัฒนาสามารถเข้าถึง (ข้อมูลหรือวิธี) แต่ยังกำหนดงานภายใน (code) ที่ทำให้ข้อมูลหรือวิธีทำงาน ตัวอุปกรณ์และโปรแกรมในการรับมือกับรูปแบบนี้จะทำงานเพื่อสร้างวัตถุตามรายละเอียดของรูปแบบ

ตัวอย่าง

ขณะที่โปรแกรมใช้ชั้นเพื่อสร้างวัตถุ วัตถุที่สร้างขึ้นจะเรียกว่าตัวอย่าง (instance) จำกัดเดียวของตัวอย่างที่สร้างขึ้นนั้นคือความจำภายในของเครื่องที่ปฏิบัติการรหัสส่วนบุคคล ตัวอย่างทุกตัวจะมีพฤติกรรมเดียวกัน แต่จะจัดการกับข้อมูลที่เป็นเดี่ยวเดียว กระบวนการที่สร้างตัวอย่างจากชั้นเรียกว่า การทำบรรลุ (instantiation)

ในบทที่ผ่านมาเราได้กล่าวถึงว่า ECMAScript ไม่มีรูปแบบของชั้น (class) ที่เป็นทางการ แทนที่นั้น ECMA-262 ได้เรียกการเรียกของวัตถุเป็นแบบฟอร์มวัตถุ (recipe) นี่เป็นแนวทางของ ECMAScript ที่เป็นการเลือกทางวิทยาศาสตร์ เพราะแบบฟอร์มวัตถุนั้นเป็นวัตถุตัวเอง แม้ว่าชั้นจะไม่มีอยู่จริง แต่เรายังเรียกแบบฟอร์มวัตถุว่าเป็นชั้น เพราะส่วนใหญ่นักพัฒนามีความเข้าใจเรื่องนี้ และทางฟังก์ชันของทั้งสองเท่ากัน

ความต้องการของภาษาที่มีการมุ่งเน้นทางวัตถุ

ภาษาที่มีการมุ่งเน้นทางวัตถุต้องมีความสามารถสี่สิ่งพื้นฐานสำหรับนักพัฒนา:

  1. การทำบรรลุ (encapsulation) - ความสามารถในการเก็บข้อมูล (ไม่ว่าจะเป็นข้อมูลหรือวิธี) ที่เกี่ยวข้องในวัตถุ
  2. การรวมกัน (aggregation) - ความสามารถในการเก็บวัตถุหนึ่งในวัตถุอื่น
  3. การสืบทอด (inheritance) - ความสามารถในการได้รับคุณสมบัติและวิธีจากวัตถุ (หรือหลายวัตถุ)
  4. โมร์โฟ (polymorphism) - ความสามารถในการเขียนฟังก์ชันหรือวิธีที่สามารถทำงานในหลายวิธี

ECMAScript สนับสนุนความต้องการนี้ ดังนั้นสามารถเห็นว่ามันเป็นภาษาที่มีการมุ่งเน้นทางวัตถุ

การประกอบวัตถุ

ใน ECMAScript วัตถุที่มีอยู่จะประกอบด้วยคุณสมบัติ (attribute) คุณสมบัตินั้นอาจเป็นค่าเดี่ยวเพียงแค่หนึ่ง หรืออาจเป็นค่าอ้างอิง ถ้าคุณสมบัติมีเป็นฟังก์ชัน มันจะถือว่าเป็นวิธี (method) ของวัตถุ ไม่ว่าคุณสมบัตินั้นจะถือว่าเป็นคุณสมบัติ (property) ของวัตถุ