
abstract, ולכן הסרטון מראה דרך לדמות מחלקה ופונקציה אבסטרקטיות.new Person(...) וליצור אובייקט ממנה.new.target מחזיר את המחלקה שבה נעשה new. אם זו Person, זורקים TypeError עם ההודעה שאי אפשר ליצור מופע ממחלקה אבסטרקטית.new.target הוא Employee והבדיקה עוברת.greet ב-Person זורקת שגיאה: you must implement the function greet.greet בעצמם.הטקסט המלא של הדקות הראשונות בהרצאה «מחלקה אבסטרקטית ב-NodeJS» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
לאובג'קט אוריינטד קיים הנושא של אבסטרקטיות. מה זה אומר? איך אנחנו יכולים בעצם למנוע יצירה של אובייקט ממחלקה מסוימת?
אקמה סקריפט 6 לא הגדירו את האפשרות הזאת להגדיר את המילה אבסטרקט. אם אני אנסה להגדיר אבסטרקט בכדי להפוך את המחלקה הזאת לאבסטרקטית אני אקבל על זה שגיאה, כמובן התוכנית לא תרוץ בכלל.
זה קיים בהמון שפות Object Oriented, אין את זה ב-Aigma Script 6, אבל כן אפשר לגרום למחלקה להיות אבסטרקטית. אז בואו נראה איך עושים את זה ב-JavaScript או ב-Node.js.
קודם כל, האם אני בעצם כן יכול לבנות אובייקט מהמחלקה Person? אז התשובה היא כמובן, כרגע, בואו נצרף כאן עוד אובייקט אחד, יש לנו כאן Person, האמת שאת שני אלה אפשר כבר להעיף, זה היה רק דמו, ובואו נניח שיש לנו את Kermit the Frog והוא בן 15. וכרגע אם אנחנו נבצע הרצה של התוכנית
הזאת, בואו נרווח פה טיפה, ואנחנו רואים שיש לנו את Kermit the Frog והוא בן 15. אבל זה בדיוק הנקודה שאנחנו רוצים למנוע.
הקטע של מחלקה אבסטרקטית היא מחלקה שאנחנו לא רוצים שמישהו ייצר ממנה אובייקט. המטרה שלה היה רק בשביל לרשת אותה. אז איך אנחנו גורמים למחלקה person שלא ניתן יהיה לייצר ממנה אובייקט?
את זה אנחנו עושים ב-constructor על ידי בדיקה. והבדיקה היא אם האופרטור new, הטארגט שלו, כלומר המחלקה שבעצם מנסים כרגע לבנות אותה היא person, בואו נייצר חריגה pro new.
החריגה שמיועדת לזה היא טייפ אירור, טייפ אירור, וכלומר החריגה הנכונה יותר לשימוש, כי יש פה בעיה טייפים מסוימת, ובואו נכתוב cannot create an instance from the abstract last person זה כל מה שאנחנו צריכים לעשות במחלקה בכדי להפוך אותה לכביכול אבסטרקטית.
בואו ניקח בדיוק את אותה התוכנית, נריץ אותה, ננקה רגע את המסך, נריץ והנה יש לנו כי not create an instance from the abstract class person.
אם אנחנו נוריד את זה, זה כמובן יוצר חריגה ונריץ שוב. הכל עובד כמו שצריך. אז גרמנו במעין שיטה עקיפה כזאת לגרום למחלקה להיות אבסטרקטית.
עכשיו, מה בקשר לפונקציה אבסטרקטית? פונקציה אבסטרקטית זאת פונקציה שאנחנו רוצים שלא יהיה לה שום מימוש במחלקה שבה היא מוגדרת, מחלקה אבסטרקטית שבה היא מוגדרת, אבל יהיה חובה לרשת אותה ולתת לה מימוש.
אז שוב, אין כאן בעצם איזשהו מענה מבחינת השפה לפונקציה אבסטרקטית. הדבר הכי קרוב לזה זה פונקציה, בואו ניקח לדוגמה את הפונקציה גריט, של תאמר שלום או תברך ברכה כלשהי, ובואו נניח שפרסון לא רוצה לבצע מימוש של גריט, כן, employee, customer ו-supplier צריכים
שיהיה להם את הגריט. אז אין באמת משהו כזה, כל מה שאנחנו עושים זה throw new arrow,