JavaScript היא שפה מבוססת אך היא רק הוסיפה תמיכה לתכנות מונחה עצמים קלאסי (OOP) ב-ES6. עד שזה הוסיף תכונות כמו הצהרות מחלקות, JavaScript טיפל ב-OP באמצעות פרדיגמה מבוססת אב טיפוס פחות מוכרת. עם זאת, בכל אחת מהשיטות, תוכל ליצור יישומים מורכבים המשתמשים בתכונות מבוססות אובייקטים.
בנאי ב-JavaScript אב טיפוסי נראה כמו כל פונקציה אחרת. ההבדל העיקרי הוא שאתה יכול להשתמש בפונקציית הבנאי הזו כדי ליצור אובייקטים.
מהו קונסטרוקטור ב-JavaScript?
בנאים הם אחד מהם המושגים הבסיסיים בתכנות מונחה עצמים. בנאי הוא פונקציה שבה אתה יכול להשתמש כדי ליצור מופע של אובייקט. בנוסף ליצירת אובייקט חדש, קונסטרוקטור מציין את המאפיינים וההתנהגויות שישייכו לו.
תחביר קונסטרוקטור
פוּנקצִיָהNameOfConstructor() {
this.property1 = "נכס1";
this.property2 = "נכס2";
this.property3 = "נכס 3";
}
אתה יכול ליצור בנאי עם ה פוּנקצִיָה מילת מפתח מכיוון שהיא בעצם כמו כל פונקציה אחרת. עם זאת, בנאים מקפידים על המוסכמות הבאות:
- כדי להבדיל אותם מפונקציות אחרות, השתמש בשם עבור הבנאי שלך שמתחיל באות גדולה.
- בונים משתמשים ב זֶה מילת מפתח אחרת. בתוך קונסטרוקטור, זֶה מתייחס לאובייקט החדש שהקונסטרוקטור יצור.
- בניגוד לפונקציות JavaScript, בנאים מגדירים מאפיינים והתנהגויות במקום להחזיר ערכים.
שימוש בקונסטרוקטור ליצירת אובייקטים חדשים
ב-JavaScript, שימוש בבנאי ליצירת אובייקט היא משימה קלה. הנה בנאי פשוט עם הזמנה אחריו:
פוּנקצִיָהסטוּדֶנט() {
this.name = "גלוריה";
this.gender = "נְקֵבָה";
זֶה.גיל = 19;
}
לתת סטודנטית = חָדָשׁ סטוּדֶנט();
בדוגמה זו, תלמידה הוא אובייקט שנוצר מתוך סטוּדֶנט בַּנַאִי. להשתמש ב חָדָשׁ מילת מפתח כדי לקרוא לפונקציה בתור בנאי. מילת מפתח זו אומרת ל-JavaScript ליצור מופע חדש של סטוּדֶנט. אתה לא צריך לקרוא לפונקציה זו ללא ה חָדָשׁ מילת מפתח בגלל ה זֶה בתוך הקונסטרוקטור לא יצביע על אובייקט חדש. לאחר הבנייה, תלמידה יש את כל המאפיינים של סטוּדֶנט. אתה יכול לגשת ולשנות את המאפיינים האלה בדיוק כמו שאתה עושה עם כל אובייקט אחר.
דברים שחשוב לדעת על בוני JavaScript
עבודה עם קונסטרוקטורים יכולה להיות כל כך מעייפת, ויחד עם זאת, זו יכולה להיות משימה קלה. הנה כמה דברים חשובים שכל מפתח צריך לדעת על עבודה עם בנאים.
שימוש בבנאים עם ויכוחים
אתה יכול להרחיב בנאי כדי לקבל ארגומנטים. זה מאוד חשוב אם אתה מחפש לכתוב קוד מגיב וגמיש.
בכל פעם שאתה יוצר אובייקט מבנאי, האובייקט יירש את כל המאפיינים שהוכרזו בבנאי. לדוגמה, ה תלמידה שיצרת למעלה יהיו בעלי מאפיינים שֵׁם, מִין, ו גיל עם ערכים התחלתיים קבועים. אמנם אתה יכול לשנות כל מאפיין באופן ידני, אבל זה יהיה הרבה עבודה אם היית כותב תוכנית באמצעות אובייקטים רבים.
למרבה המזל, בוני JavaScript יכולים לקבל פרמטרים, כמו כל פונקציה אחרת. אתה יכול לשנות את סטוּדֶנט בנאי לקבל שני פרמטרים:
פוּנקצִיָהסטוּדֶנט(שם / מגדר) {
זֶה.name = שם;
זֶה.gender = מגדר;
זֶה.גיל = 19;
}
לכל האובייקטים שנוצרו מהאמור לעיל יהיו גיל מכוון ל 19. אתה יכול לעצב את הקונסטרוקטור שלך כך אם יש מאפיין שאתה רוצה שכל האובייקטים יהיו.
כעת ניתן להגדיר אובייקטים ייחודיים מאותו בנאי על ידי העברת ארגומנטים שונים.
טיעונים הופכים את הבנאים לגמישים יותר. הם חוסכים זמן ומעודדים קוד נקי.
הגדרת שיטות אובייקט
מתודה היא תכונת אובייקט שהיא פונקציה. שיטות משפרות את הקוד שלך ב-OOP מכיוון שהוא מוסיף התנהגויות שונות לאובייקטים שלך. הנה דוגמא:
פוּנקצִיָהסטוּדֶנט(שם / מגדר) {
זֶה.name = שם;
זֶה.gender = מגדר;
זֶה.גיל = 19 ;
זֶה.sayName = פוּנקצִיָה () {
לַחֲזוֹר`קוראים לי ${name}`;
}
}
האמור לעיל מוסיף את הפונקציה sayName לקונסטרוקטור.
נניח שאתה משתמש בבנאי זה כדי ליצור אובייקט שאתה מאחסן במשתנה, תלמידה. לאחר מכן תוכל לקרוא לפונקציה זו עם הקוד שלהלן:
תלמידה.sayName()
אב הטיפוס
קודם לכן, יצרנו סטוּדֶנט באופן שלכל המופעים שלו יהיה an גיל נכס בשווי של 19. זה יביא למשתנה משוכפל עבור כל אחד מהם סטוּדֶנט מופע שאתה יוצר.
כדי למנוע כפילות זו, JavaScript משתמש במושג אבות טיפוס. כל האובייקטים שנוצרו מבנאי חולקים את המאפיינים של אב הטיפוס שלו. אתה יכול להוסיף את גיל רכוש ל סטוּדֶנט אב טיפוס כפי שמוצג להלן:
Student.prototype.age = 19;
על ידי כך, כל המקרים של סטוּדֶנט יהיה את גיל תכונה. מצהיר מאפייני אב טיפוס היא דרך לצמצם קוד כפול באפליקציה שלך. זה הופך את הקוד שלך לסטנדרטי ככל האפשר.
מאפיין אב טיפוס יכול להיות אובייקט
אתה יכול להוסיף מאפייני אב טיפוס בנפרד כפי שהוסבר לעיל. אבל אם יש לך נכסים רבים להוסיף, זה יכול להיות לא נוח.
כחלופה, אתה יכול להכיל את כל המאפיינים שאתה צריך באובייקט חדש. על ידי כך, תגדיר את כל המאפיינים בבת אחת. לדוגמה:
Student.prototype = {
גיל: 19,
גזע: "לבן",
נָכוּת: "אף אחד"
}
זכור להגדיר את בַּנַאִי מאפיין בעת הגדרת אב טיפוס לאובייקט חדש.
Student.prototype = {
בַּנַאִי: סטודנט,
גיל: 19,
גזע: "לבן",
נָכוּת: "אף אחד"
}
אתה יכול להשתמש במאפיין זה כדי לבדוק איזו פונקציית בנאי יצרה מופע.
טיפוסי על וירושה
יְרוּשָׁה היא שיטה שמתכנתים משתמשים כדי לצמצם שגיאות ביישומים שלהם. זו דרך להיצמד ל- אל תחזור על עצמך (יבש) עִקָרוֹן.
נניח שיש לך שני בנאים-סטוּדֶנט ו מוֹרֶה- שיש להם שני מאפייני אב טיפוס דומים.
Student.prototype = {
בַּנַאִי: סטודנט,תגיד שם: פוּנקצִיָה () {
לַחֲזוֹר`קוראים לי ${name}`;
}
}Teacher.prototype = {
בַּנַאִי: מורה,
תגיד שם: פוּנקצִיָה () {
לַחֲזוֹר`קוראים לי ${name}`;
}
}
שני הבנאים האלה מגדירים את sayName שיטה, באופן זהה. כדי למנוע כפילות מיותרת זו, אתה יכול ליצור א טיפוס על.
פוּנקצִיָהפרטים אישיים(){};
IndividualDetails.prototype = {
בַּנַאִי: פרטים אישיים,
תגיד שם: פוּנקצִיָה () {
לַחֲזוֹר`קוראים לי ${name}`;
}
};
לאחר מכן תוכל להסיר sayName משני הבנאים.
כדי לרשת את המאפיינים מהסופר-טיפוס, השתמש Object.create(). אתה מגדיר את אב הטיפוס של שני הבנאים למופע של טיפוס העל. במקרה זה, אנו מגדירים את סטוּדֶנט ו מוֹרֶה אבות טיפוס למופע של IndividualDetails.
הנה זה:
Student.prototype = לְהִתְנַגֵד.create (IndividualDetails.prototype);
Teacher.prototype = לְהִתְנַגֵד.create (IndividualDetails.prototype);
על ידי כך, סטוּדֶנט ו מוֹרֶה לרשת את כל המאפיינים של טיפוס העל, פרטים אישיים.
כך מתרגלים DRY ב-OOP באמצעות טיפוסי על.
הבנאים הם מחליפי משחק
בנאים הם מרכיב מפתח ב-JavaScript, ושליטה בפונקציונליות שלהם היא חיונית לפיתוח יישומי OOP JavaScript. אתה יכול להשתמש בבנאי כדי ליצור אובייקטים שחולקים מאפיינים ושיטות. אתה יכול גם להשתמש בירושה כדי להגדיר היררכיות של אובייקטים.
ב-ES6, אתה יכול להשתמש ב- מעמד מילת מפתח להגדרת מחלקות מונחות עצמים קלאסיות. גרסה זו של JavaScript תומכת גם ב-a בַּנַאִי מילת מפתח.