เกมส์ที่ชื่อว่า Destroy All Human (ถ้าหากว่าใครเคยเล่น) คือ ในเกมส์เราจะเล่นเป็น Alien ซึ่งเราสามารถปลอมตัวเป็นมนุษย์โดยจับตัวมาแล้วเข้าสิงได้ ซึ่ง สำหรับการ ineritance ใน JavaScript ก็คล้ายๆกัน คือ ถ้าชอบ Object ตัวไหน ก็สามารถเอา Prototype ตัวเองไปจิ้มเข้าที่ Object ตัวนั้น ตัวเองก็จะสามารถกลายไปเป็น Object ตัวนั้นได้ ถ้ายังจำได้ ในบทความครั้งก่อนผมพูดถึ่งเรื่องการสร้าง Object ใน JavaScript ไว้ว่า Object ที่ถูกสร้างขึ้นโดยคำสั่ง new จะมี prototype property เหมือนกับ prototype property ของ Constructor การที่จะเข้าใจในเรื่องของการ inheritance ในภาษา JavaScript เราจะต้องเข้าใจวิธีการทำงานของ prototype ก่อน
ทุกๆครั้งที่เราเรียกใช้งาน property ของ object JavaScript จะทำการ Check ค่า property ดังกล่าวภายในตัว object เองก่อน ถ้าหากไม่พบ ก็จะไปหาต่อที่ prototype property ของ Object นั้นๆ ถ้ายังไม่พบอีก ก็จะไปหาต่อที่ Object ที่มีการ reference ไว้ใน prototype property (prototype ในภาษา JavaScript สามารถ reference ไปยัง Object อื่นได้ สำหรับในกรณีที่ต้องการใช้ Object นั้นเป็น prototype) ซึ่งกระบวนการค้นหาดังกล่าวจะทำไปเรื่อยๆจนกว่าจะพบ หรือไม่ก็สิ้นสุด prototype chain
หากเราเข้าใจหลักการทำงานของ Prototype Chain แล้ว เราก็จะสามารถเข้าใจเรื่อง inheritance ใน JavaScript ได้ไม่ยาก ซึ่งวิธีการ inheritance ใน JavaScript สามารถทำได้โดยการกำหนดให้ prototype property ของ Object มีค่าเท่ากับ new Instance ของ Object ที่ต้องการ inherit ดังตัวอย่างต่อไปนี้
จากในตัวอย่าง ให้สังเกตุว่าเรากำหนดให้ BankAccount ทำการ inherit จาก Account โดยกำหนดให้ BankAccount.prototype มีค่าเท่ากับ new Account(0,0) (New Instance ของ Account) ส่วนใน Constructor ของ BankAccount เราสั่งให้มีการเรียก Constructor ของ Parent Class (ซึ่งในที่นี้คือ Account) ให้สังเกตุว่าเราเรียกโดยใช้คำสั่ง call ของ JavaScript เพื่อสั่งให้ Constructor ของ Account ทำงาน โดยส่ง this (invoking object) เป็นค่า parameter ตัวแรก ส่วน amount และ lowest เป็นค่าที่ส่งให้ ตามที่กำหนดไว้ใน Account Constructor
No comments:
Post a Comment