JavaScript เป็นภาษาที่รู้จักกันดีในด้านความยืดหยุ่นและความสามารถในการนำมาใช้ในงานด้านหลากหลายรูปแบบ ไม่ว่าจะเป็นการพัฒนาเว็บไซต์แบบ front-end, การสร้าง server-side application ด้วย Node.js, หรือแม้กระทั่งการพัฒนา mobile applications ในบทความนี้เราจะมาสำรวจเกี่ยวกับการใช้งาน Object-Oriented Programming (OOP) ใน JavaScript ที่มาพร้อมกับความสามารถในการใช้ Getter และ Setter เพื่อสร้าง property ที่มีความซับซ้อนและการจัดการข้อมูลที่ดีขึ้น
JavaScript เป็นภาษาโปรแกรมมิ่งแบบ prototype-based ซึ่งไม่ใช่แบบ class-based อย่างที่พบใน Java หรือ C++ อย่างไรก็ตาม ใน ES6 ภาษา JavaScript ได้มีการเพิ่มความสามารถในการใช้งาน class ซึ่งทำให้การจัดการโปรแกรมในรูปแบบ OOP ง่ายขึ้น เมื่อเราเขียนโปรแกรมในแบบ OOP จะช่วยให้โค้ดระเบียบเรียบร้อยและสามารถจัดการในระดับสูงได้ดีขึ้น
ในภาษาโปรแกรม OOP, Getter และ Setter ทำหน้าที่จัดการการเข้าถึงข้อมูลของ object properties การใช้ Getter และ Setter ช่วยให้เราสามารถควบคุมการเข้าถึงข้อมูลได้อย่างมีประสิทธิภาพและยังช่วยในการบำรุงรักษาระบบให้สามารถปรับเปลี่ยนได้ง่ายขึ้นเมื่อมีฟังก์ชั่นใหม่เกิดขึ้น
Getter
Getter เป็น method ที่ช่วยให้คุณดึงค่า property ของ object โดยที่ไม่จำเป็นต้องเข้าถึงตัว property โดยตรง Syntax ของ Getter มีลักษณะดังนี้:
class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
get area() {
return this.height * this.width;
}
}
const rect = new Rectangle(10, 5);
console.log(rect.area); // Output: 50
จากตัวอย่างข้างต้น class `Rectangle` มี property `area` ซึ่งไม่ใช่ property ธรรมดา แต่เป็น method ที่ถูกเรียกใช้งานผ่าน getter การใช้ getter ทำให้เราสามารถคำนวณพื้นที่ของรูปสี่เหลี่ยมเมื่อเรียกใช้ `rect.area` ได้โดยตรง
Setter
Setter ช่วยให้เราสามารถกำหนดค่าให้กับ properties ของ object ในแบบที่มีการตรวจสอบความถูกต้องได้ โดยเราจะใช้ setter method ในการกำหนดค่าของ property Syntax ของ Setter มีลักษณะดังนี้:
class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
get area() {
return this.height * this.width;
}
set dimensions(dimensions) {
const [height, width] = dimensions;
this.height = height;
this.width = width;
}
}
const rect = new Rectangle(10, 5);
rect.dimensions = [20, 10];
console.log(rect.area); // Output: 200
ในตัวอย่างนี้เราได้กำหนด `set dimensions` เพื่อปรับเปลี่ยนขนาดของสี่เหลี่ยม การใช้ setter ช่วยให้สามารถควบคุมกระบวนการที่เกิดขึ้นเมื่อมีการเปลี่ยนแปลง property ซึ่งในกรณีนี้คือการตรวจสอบความถูกต้องและกำหนดขนาดให้กับ object
การใช้งาน Getter และ Setter มีประโยชน์อย่างมากในโปรแกรมที่มีความซับซ้อน เนื่องจากช่วยให้เราจัดการข้อมูลภายใน object ได้อย่างมีประสิทธิภาพ ยกตัวอย่างเช่น ในการพัฒนาเกมออนไลน์ เราอาจมี object character ที่มี properties หลายอย่างไม่ว่าจะเป็นพลังชีวิต (HP), ค่าโจมตี (Attack), และค่าป้องกัน (Defense)
class Character {
constructor(name, hp, attack, defense) {
this.name = name;
this._hp = hp; // ใช้ underscore เพื่อจัดว่าเป็น property ภายใน
this.attack = attack;
this.defense = defense;
}
get hp() {
return this._hp;
}
set hp(value) {
if (value < 0) {
this._hp = 0; // ไม่อนุญาตให้ HP ต่ำกว่า 0
} else {
this._hp = value;
}
}
}
const hero = new Character('Hero', 100, 25, 10);
hero.hp -= 120; // ถูกโจมตี
console.log(hero.hp); // Output: 0
ในตัวอย่างเกมนี้ เราได้ใช้ setter เพื่อควบคุมไม่ให้ HP ของ character ลดลงต่ำกว่า 0 ซึ่งทำให้เรามั่นใจว่าข้อมูลที่สำคัญของเกมยังคงอยู่ในสถานะที่เราต้องการ
การใช้งาน Getter และ Setter ควรระมัดระวังเช่นกัน เพราะสามารถทำให้การ debug ยากขึ้นหากมีการซับซ้อนในโค้ดมากเกินไป นอกจากนี้ยังควรพิจารณาการใช้ Setter โดยเฉพาะในกรณีที่มีการตรวจสอบค่าหรือมี logic ภายใน เพื่อให้มั่นใจว่าไม่ก่อให้เกิด side effect ที่ไม่คาดคิดในโปรแกรม
การใช้ Getter และ Setter ใน JavaScript สามารถช่วยควบคุมและจัดการ property ของ object ได้อย่างมีประสิทธิภาพ นอกจากจะทำให้โค้ดดูเรียบร้อยแล้วยังทำให้ง่ายต่อการบำรุงรักษา และเพิ่มประสิทธิภาพการทำงานของโปรแกรม หากคุณสนใจที่จะปรับปรุงความรู้และทักษะใน JavaScript และโปรแกรมมิ่งแบบ OOP ทาง 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
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM