สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Object-Oriented Programming

JavaScript OOP - การสร้าง Objects ด้วย Constructors JavaScript OOP - การใช้ Prototypes ใน JavaScript JavaScript OOP - การใช้ Class ใน JavaScript (ES6) JavaScript OOP - การสร้าง Methods ใน Class JavaScript OOP - การใช้ Inheritance และ Extends ใน Class JavaScript OOP - การใช้ Encapsulation และ Private Variables JavaScript OOP - การใช้ Static Methods ใน Class JavaScript OOP - การใช้ This Keyword ใน JavaScript JavaScript OOP - การทำงานกับ Getter และ Setter OOP ใน JavaScript - OOP คืออะไรใน JavaScript OOP ใน JavaScript - Object ใน JavaScript คืออะไร OOP ใน JavaScript - วิธีการสร้าง Object ใน JavaScript (Object Literal) OOP ใน JavaScript - การเข้าถึงและเปลี่ยนแปลงค่าของ Object Properties OOP ใน JavaScript - การลบ Properties ใน Object OOP ใน JavaScript - การใช้ this Keyword ใน Object OOP ใน JavaScript - การสร้าง Method ใน Object OOP ใน JavaScript - การใช้ Factory Functions ในการสร้าง Object OOP ใน JavaScript - การสร้าง Object ด้วย Constructor Function OOP ใน JavaScript - การใช้ new Keyword เพื่อสร้าง Object OOP ใน JavaScript - ขอบเขตของ this ใน Constructor Function OOP ใน JavaScript - การใช้ Object.assign() เพื่อคัดลอก Object OOP ใน JavaScript - การสร้าง Object ด้วย Object.create() OOP ใน JavaScript - การใช้ in และ hasOwnProperty สำหรับตรวจสอบ Properties OOP ใน JavaScript - Prototype คืออะไรใน JavaScript OOP ใน JavaScript - การใช้ Prototypal Inheritance ใน JavaScript OOP ใน JavaScript - การเข้าถึง Prototype Chain OOP ใน JavaScript - การใช้ Object.getPrototypeOf() และ Object.setPrototypeOf() OOP ใน JavaScript - การเพิ่ม Methods ใน Prototype OOP ใน JavaScript - Constructor Property คืออะไร OOP ใน JavaScript - ความต่างระหว่าง Prototype Inheritance และ Classical Inheritance OOP ใน JavaScript - Encapsulation ใน OOP คืออะไร OOP ใน JavaScript - การซ่อนข้อมูลด้วย Private Properties OOP ใน JavaScript - การใช้ Getter และ Setter ใน Object Class ใน JavaScript (ES6) - การสร้าง Class ใน JavaScript Class ใน JavaScript (ES6) - Constructor Method ใน Class คืออะไร Class ใน JavaScript (ES6) - การสร้าง Object จาก Class ด้วย new Class ใน JavaScript (ES6) - การใช้ Methods ใน Class Class ใน JavaScript (ES6) - การใช้ this Keyword ภายใน Class Class ใน JavaScript (ES6) - Inheritance ใน Class คืออะไร Class ใน JavaScript (ES6) - การใช้ extends ใน Class สำหรับการสืบทอด Class ใน JavaScript (ES6) - การใช้ super() ใน Class Class ใน JavaScript (ES6) - การ Override Methods ใน Subclass Class ใน JavaScript (ES6) - Static Method ใน Class คืออะไร Class ใน JavaScript (ES6) - การใช้ Static Properties และ Methods ใน Class Class ใน JavaScript (ES6) - ความแตกต่างระหว่าง Instance และ Static Methods Class ใน JavaScript (ES6) - การใช้ instanceof สำหรับตรวจสอบประเภทของ Object Class ใน JavaScript (ES6) - การใช้ Polymorphism ใน OOP Class ใน JavaScript (ES6) - Abstract Classes และ Interface ใน OOP Class ใน JavaScript (ES6) - การสร้าง Interface ใน JavaScript (แนวคิด) Class ใน JavaScript (ES6) - การใช้ Composition แทนการสืบทอด (Favor Composition over Inheritance) Class ใน JavaScript (ES6) - การสร้างและจัดการ Private Methods ใน Class Class ใน JavaScript (ES6) - Encapsulation ใน Class Class ใน JavaScript (ES6) - ข้อดีและข้อเสียของการใช้ Class ใน JavaScript Advanced OOP Concepts ใน JavaScript - การใช้ Mixin ในการผสาน Methods ระหว่าง Objects Advanced OOP Concepts ใน JavaScript - การใช้ Object.freeze() เพื่อทำให้ Object ไม่เปลี่ยนแปลง Advanced OOP Concepts ใน JavaScript - การทำ Deep Copy ของ Object ด้วย Recursion Advanced OOP Concepts ใน JavaScript - การใช้ Proxy เพื่อควบคุมการทำงานของ Object Advanced OOP Concepts ใน JavaScript - การใช้ Reflect ในการจัดการกับ Object และ Functions Advanced OOP Concepts ใน JavaScript - ความแตกต่างระหว่าง OOP และ Functional Programming ใน JavaScript OOP ในภาษา Go - การใช้ Methods ใน Go OOP ในภาษา Go - การผูก Methods กับ Struct OOP ในภาษา Go - การใช้ Interface ใน Go OOP ในภาษา Go - การประกาศและใช้ Interface OOP ในภาษา Go - Empty Interface (interface{}) OOP ในภาษา Go - Type Assertion กับ Interface OOP ในภาษา Go - การใช้ Type Switch กับ Interface OOP ในภาษา Go - การใช้ Polymorphism ใน Go OOP ในภาษา Go - การทำ Composition แทน Inheritance OOP ในภาษา Go - การใช้ Embedded Types แทนการสืบทอด OOP ในภาษา Go - การทำ Dependency Injection ใน Go

Class ใน JavaScript (ES6) - การใช้ super() ใน Class

 

# Class ใน JavaScript (ES6) - การใช้ `super()` ใน Class

การพัฒนาโปรแกรมด้วยภาษา JavaScript ได้มีวิวัฒนาการมาอย่างมากมาย โดยเฉพาะกับการเปิดตัว ECMAScript 6 (หรือที่เรียกว่า ES6) ซึ่งได้นำเสนอความสามารถใหม่ ๆ ที่ทำให้นักพัฒนาสะดวกในการเขียนโค้ดมากขึ้น หนึ่งในความสามารถที่สำคัญใน ES6 ก็คือ "Class"

Class ใน ES6 ช่วยให้นักพัฒนาสามารถจัดการโค้ดที่มีความซับซ้อนได้ง่ายขึ้นผ่านการนำเสนอแนวคิดเชิงวัตถุ (Object-Oriented Programming) ซึ่งซอฟต์แวร์ที่มีความซับซ้อนสูงพัฒนาด้วยแนวคิดนี้มักมีประสิทธิภาพและง่ายต่อการดูแลรักษา ในบทความนี้ เราจะมาดูการใช้งานของ `super()` ในคลาสของ JavaScript เพื่อเจาะลึกถึงความสำคัญและการประยุกต์ใช้

 

ความเข้าใจพื้นฐานของ Class ใน JavaScript

ก่อนอื่นเรามาทำความเข้าใจกันก่อนว่า class คืออะไร Class คือแบบแผนหรือแบบจำลอง (Blueprint) ที่อนุญาตให้คุณสร้างออบเจ็กต์ และมีส่วนประกอบที่สำคัญคือ constructor ซึ่งเป็นฟังก์ชันที่เรียกใช้เมื่อมีการสร้างออบเจ็กต์ใหม่


class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} makes a noise.`);
  }
}

ในตัวอย่างด้านบน เราได้สร้าง class ชื่อ `Animal` ที่มี constructor รับพารามิเตอร์ `name` และฟังก์ชัน `speak` ที่แสดงข้อความ

 

การสืบทอด (Inheritance) ด้วย Class

หนี่งในพลังของ class คือการสืบทอดคลาสอื่นได้ หมายความว่าฟังก์ชันและคุณสมบัติของคลาสสามารถนำไปใช้ในคลาสใหม่ได้ ตัวอย่างเช่น


class Dog extends Animal {
  constructor(name, breed) {
    super(name); // เรียกใช้superเพื่อเรียกconstructorของคลาสพ่อแม่
    this.breed = breed;
  }

  speak() {
    console.log(`${this.name} barks.`);
  }
}

ในตัวอย่างด้านบน คลาส `Dog` ได้สืบทอดจากคลาส `Animal` โดยที่ `Dog` จะมีฟังก์ชันและคุณสมบัติจาก `Animal` มาใช้ได้ `constructor` ของ `Dog` ยังสามารถเพิ่มคุณสมบัติพิเศษเช่น `breed` ได้อีกด้วย

 

ทำความรู้จักกับ `super()`

ฟังก์ชัน `super()` ใน JavaScript ใช้เพื่อเรียกใช้ฟังก์ชันของคลาสพ่อแม่ (superclass) จากบรรทัดที่คุณต้องการ สามารถเรียกใช้ได้ทั้งในตัวสร้าง (constructor) และฟังก์ชันอื่น ๆ ที่เกิดจากการสืบทอด

การใช้ `super()` ใน constructor

เมื่อคุณใช้คลาสที่สืบทอดจากคลาสอื่น จำเป็นต้องเรียก `super()` ใน constructor ก่อนที่จะใช้งาน `this` นั่นหมายความว่า `super()` จะเริ่มกระบวนการของการกำหนดค่าเบื้องต้นตามคลาสพ่อแม่ก่อนที่ค่าอื่น ๆ จะถูกกำหนดในคลาสลูก


constructor(name, breed) {
  super(name); // เพิ่มค่า 'name' จาก Animal
  this.breed = breed;
}

การใช้ `super` ในฟังก์ชันอื่น

ไม่เพียงแต่ `constructor` เท่านั้น คุณยังสามารถใช้ `super.` เพื่อเรียกใช้ฟังก์ชันของคลาสพ่อแม่ในฟังก์ชันที่อยู่ภายในคลาสลูกได้


speak() {
  super.speak(); // เรียกใช้ฟังก์ชัน 'speak' ของ Animal
  console.log(`${this.name} the ${this.breed} barks.`);
}

ในตัวอย่างข้างต้น `super.speak()` ถูกใช้เพื่อเรียกฟังก์ชัน `speak` จากคลาส `Animal` ซึ่งสามารถใส่ตรรกะเพิ่มเติมภายในฟังก์ชัน `speak` ของ `Dog` ได้

 

กรณีการใช้งาน (Usecase) ของ `Class` และ `super()` ใน JavaScript

การสืบทอดคุณสมบัติผ่าน `class` และ `super()` เหมาะสำหรับการออกแบบโปรแกรมที่ต้องการแยกแยะหน้าที่หรือความรับผิดชอบของโค้ด โดยในบริบทของโปรแกรมประยุกต์ต่าง ๆ เหล่านี้:

1. ระบบจัดการผู้ใช้งาน (User Management System): คิดถึงระบบที่มีทั้งผู้ใช้ทั่วไปและผู้ดูแล ระบบอาจมีคลาส `User` ที่บันทึกชื่อผู้ใช้และอีเมล จากนั้นมีคลาส `Admin` ที่สืบทอดจาก `User` และเพิ่มฟังก์ชันในการจัดการผู้ใช้อื่น

2. เกมจำลองโครงสร้างสิ่งมีชีวิต (Animal Simulation Game): ในเกมประเภทนี้อาจมีคลาสพื้นฐานอย่าง `Animal` ที่ถูกสืบทอดในคลาสย่อยอย่าง `Cat`, `Dog`, `Bird` ซึ่งแต่ละชนิดจะมีพฤติกรรมเฉพาะของตัวเอง

ด้วยความสามารถพิเศษของ `super()` ในการใช้และขยายฟังก์ชันจากคลาสพ่อแม่ ทำให้การพัฒนาซอฟต์แวร์และโปรเจคต่าง ๆ มีความยืดหยุ่นและสะดวกขึ้น

 

สรุป

การใช้ `class` และ `super()` ใน JavaScript ES6 ช่วยให้นักพัฒนาสามารถจัดการและขยายโค้ดได้ง่ายขึ้นและมีประสิทธิภาพมากขึ้น การเข้าใจการสืบทอดและการใช้ `super()` เป็นวิธีที่สำคัญในการออกแบบซอฟต์แวร์ที่มีความซับซ้อน ซึ่งช่วยให้การจัดการและการปรับเปลี่ยนซอฟต์แวร์สามารถทำได้ง่ายและมีความยืดหยุ่น

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเทคนิคเหล่านี้และทักษะการเขียนโปรแกรมอื่น ๆ EPT (Expert-Programming-Tutor) พร้อมเสมอที่จะนำเสนอหลักสูตรการเรียนรู้ที่ครอบคลุมและเหมาะสมกับทุกระดับของความชำนาญของคุณในเส้นทางการเขียนโปรแกรม

 

 

หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง

หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/


Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android


บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา