פרק 6: אובייקטים
·
הקדמה
·
אופן
הפנייה לתכונות של אובייקט
·
יצירת
אובייקט חדש
·
מספרי
האינדקס שניתנים לתכונות שיש באובייקט
·
הגדרת
מתודות באובייקט
·
המילה
השמורה this
·
שחרור
הזיכרון שמשמש אובייקטים באמצעות המילה השמורה delete
·
משפט
ה-with
·
תרגילים
הקדמה
JavaScript
נחשבת ל- Object
Oriented Language. אובייקט (Object) נחשב למבנה שכולל בתוכו תכונות (משתנים). המשתנים שבתוך האובייקט
יכולים להיות אובייקטים אחרים. אל האובייקט משויכות פונקציות, שנקראות גם מתודות,
ושניתן להפעילן אך ורק על אותו אובייקט מסוים שאליו הן משויכות.
האובייקטים
נחלקים לשני סוגים:
1. אובייקטים
שמהווים חלק מובנה מהשפה, ושניתן להשתמש בהם בכל עת בהתאם לצרכים.
2. אובייקטים חדשים
שמוגדרים בתכנית על ידי המתכנת.
פרק
זה מתמקד בסוג השני. הפרק הבא יתמקד בסוג הראשון.
אופן הפנייה לתכונות של אובייקט
הפנייה
לתכונותיו של אובייקט ב- JavaScript
נעשית בדומה לשפות C++ ו- Java. כדי לפנות לתכונה של אובייקט (משתנה שקיים בתוכו) יש לרשום את שם
האובייקט, כלומר, את שם המשתנה שמכיל את האובייקט (ואם רוצים לדייק אז, למעשה,
מכיל reference לאובייקט) ואחריו את שם התכונה שאליה רוצים לפנות וביניהם נקודה
מפרידה.
אחת
הדרכים ליצירת אובייקט הוצגה בפרק שעסק בקבועים (אם אינך זוכר/ת כדאי שתחזור
עליו). בדוגמא הבאה מוצג אופן הגישה לתכונותיו של אובייקט.
<!-- file name : SimpleObject.html -->
<!-- 2000(c) Zindell Publishing House Ltd.
-->
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.0//EN">
<HTML>
<HEAD>
<TITLE>SimpleObject.html</TITLE>
<SCRIPT
LANGUAGE="JavaScript1.3">
var myTV;
myTV = {brand:
"SONY", size: 54, country: "JAPAN", price:12200};
document.write("<BR>The
details of myTV are : ");
document.write("<BR>brand
: " + myTV.brand);
document.write("<BR>size : " + myTV.age);
document.write("<BR>country
: " + myTV.country);
document.write("<BR>price : " + myTV.price);
document.write("<BR><BR>NOW CHANGING THE PRICE TO
9800<BR>");
myTV.price = 9800;
document.write("<BR>The details of myTV are : ");
document.write("<BR>brand
: " + myTV.brand);
document.write("<BR>size
: " + myTV.age);
document.write("<BR>country : " +
myTV.country);
document.write("<BR>price : " + myTV.price);
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
בכתיבת
שמות המשתנים שמהווים אובייקטים, ובכתיבת שמות המשתנים בתוכם יש להקפיד על כתיבתם
באופן מדויק תוך תשומת לב לאותיות גדולות או קטנות. JavaScript היא CaseSensitive.
ב-
JavaScript, להבדיל מ- C++ ולהבדיל מ- Java, ניתן בזמן ריצה להוסיף לאובייקטים שכבר נוצרו תכונות נוספות. כדי
לעשות זאת יש לרשום את שם האובייקט, ולהוסיף אחריו את שם התכונה שרוצים להוסיף
בצירוף נקודה מפרידה ובהמשך השורה לרשום את סימן השוויון ואת הערך שרוצים להכניס
לתכונה החדשה שהתווספה.
התכנית
הבאה מדגימה אפשרות זו.
<!-- file name : addingProperty.html -->
<!-- 2000(c) Zindell Publishing House Ltd.
-->
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.0//EN">
<HTML>
<HEAD>
<TITLE>addingProperty.html</TITLE>
<SCRIPT
LANGUAGE="JavaScript1.3">
var myTV;
myTV = {brand:
"SONY", size: 54, country: "JAPAN", price:12200};
document.write("<BR>The
details of myTV are : ");
document.write("<BR>brand
: " + myTV.brand);
document.write("<BR>size
: " + myTV.age);
document.write("<BR>country : " + myTV.country);
document.write("<BR>price : " + myTV.price);
document.write("<BR><BR>NOW
ADDING THE PROPERTY WHICH ITS NAME IS number<BR>");
myTV.number = 8777407;
document.write("<BR>The details of myTV are : ");
document.write("<BR>brand
: " + myTV.brand);
document.write("<BR>size : " + myTV.age);
document.write("<BR>country
: " + myTV.country);
document.write("<BR>price : " + myTV.price);
document.write("<BR>number : " + myTV.number);
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
שמות
המשתנים (התכונות) שיש באובייקט ומערך הם שתי דרכי גישה שונות לאותו מקבץ של
ערכים. כאשר קיים אובייקט שיש לו תכונות או מערך של ערכים מבנה הנתונים של שניהם
זהה. מסיבה זו, כאשר קיים אובייקט אז ניתן לגשת אל ערכי משתניו כאילו הוא היה
מערך, ולהפך, כאשר קיים מערך אז ניתן לגשת לערכיו כאילו הוא היה אובייקט. התכנית
הבאה מדגימה זאת.
<!-- file name : objectAsAnArray.html -->
<!-- 2000(c) Zindell Publishing House Ltd.
-->
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.0//EN">
<HTML>
<HEAD>
<TITLE>objectAsAnArray.html</TITLE>
<SCRIPT LANGUAGE="JavaScript1.3">
var myTV;
myTV = {brand: "SONY",
size: 54, country: "JAPAN", price:12200};
document.write("<BR>The
details of myTV are : ");
document.write("<BR>brand
: " + myTV.brand);
document.write("<BR>size
: " + myTV.size);
document.write("<BR>country : " + myTV.country);
document.write("<BR>price
: " + myTV.price);
document.write("<BR><BR>Now, showing the values as is
the object was an array<BR>");
document.write("<BR>The
details of myTV are : ");
document.write("<BR>brand
: " + myTV["brand"]);
document.write("<BR>size
: " + myTV["size"]);
document.write("<BR>country : " +
myTV["country"]);
document.write("<BR>price
: " + myTV["price"]);
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
יצירת
אובייקט חדש
ב-JavaScript קיימות מספר דרכים שבהן ניתן ליצור אובייקט חדש. אחת הדרכים היא
להשתמש במה שקרוי בשם: Object Initializers.
התחביר שבו יש להשתמש הוא התחביר הבא:
{ הערך : שם
תכונה . . . . . . הערך: שם תכונה ,
הערך: שם תכונה} = שם האובייקט
בדרך זו כל אחד
מהערכים שניתנים לתכונות האובייקט שיוצרים יכול להיות או מחרוזת תווים או ערך
מספרי או שם של אובייקט אחר. יצירת האובייקט נעשית בתוך הסוגרים המסולסלות. השמת
האובייקט שנוצר אל תוך משתנה לא חייבת להיעשות. נעשה זאת רק אם דרושה גישה
לאובייקט שיוצרים.
התכנית הבאה
מדגימה את יצירתו של אובייקט שאחת מתכונותיו היא אובייקט אחר.
<!-- file name : objectAsProperty.html -->
<!-- 2000(c) Zindell Publishing House Ltd.
-->
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.0//EN">
<HTML>
<HEAD>
<TITLE>objectAsProperty.html</TITLE>
<SCRIPT LANGUAGE="JavaScript1.3">
var myTV;
myTV = {brand:
{company:"SONY" , type:"ex-443"},
size: 54, country: "JAPAN", price:12200};
document.write("<BR>The
details of myTV are : ");
document.write("<BR>company : " + myTV.brand.company);
document.write("<BR>type
: " + myTV.brand.type);
document.write("<BR>size
: " + myTV.size);
document.write("<BR>country : " + myTV.country);
document.write("<BR>price
: " + myTV.price);
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
דרך שניה ליצירת
אובייקט חדש כוללת את הגדרתה של פונקציה מתאימה אשר תפעל בתור constructor, ולאחר מכן את יצירת האובייקט באמצעות המילה השמורה new והפונקציה שהוגדרה. לפונקציה שמגדירים יש לתת שם שמעתה ואילך יהיה
שם סוגו של האובייקט )זה יהיה שמה של
המחלקה(. הכללים שעל פיהם יש לפעול דומים לכללים שבהם יש לפעול כאשר
מתכנתים ב-Java.
לאחר שמגדירים את הפונקציה המתאימה (ה-constructor) אין כל מגבלה על מספר האובייקטים שניתן לייצור באמצעותה.
התכנית הבאה
מדגימה דרך זו.
<!-- file name : createObjectUsingNew.html
-->
<!-- 2000(c) Zindell Publishing House Ltd.
-->
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.0//EN">
<HTML>
<HEAD>
<TITLE>createObjectUsingNew.html</TITLE>
<SCRIPT LANGUAGE="JavaScript1.3">
function Student(name, id, age)
{
this.name = name;
this.id = id;
this.age = age;
}
function getDetails(std)
{
document.write("<BR>name :" + std.name);
document.write("<BR>id :" + std.id);
document.write("<BR>age :" + std.age);
}
oldStd = new
Student("dov", 4443231, 42);
getDetails(oldStd);
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
בתחילת הפרק
הוצגה האפשרות להוסיף בזמן ריצה תכונה חדשה לאובייקט שכבר נוצר. כאשר עושים זאת
לאובייקט שנוצר באמצעות constructor
התכונה החדשה תתווסף אך ורק לאובייקט המסוים שאליו היא הוספה. יתר האובייקטים
שנוצרו באמצעות אותו constructor
(כלומר, ששייכים לאותה מחלקה) יישארו ללא שינוי. התכונה החדשה שהוספה לא תתווסף
אליהם.
אם רוצים להוסיף
תכונה חדשה לכל האובייקטים ששייכים למחלקה מסוימת אז יש להוסיף אותה אל תוך ההגדרה
של ה-constructor או לעשות שימוש בתכונה prototype.
בכל אובייקט
קיימת התכונה prototype.
פניה לתכונה זו מתוך שמו של ה-constructor
שקיים, והוספת שמה של התכונה שרוצים להוסיף לכל האובייקטים כאשר נקודה מפרידה
מוספת לפניה תגרום לכך שהתכונה תתווסף לכל האובייקטים. בשורה הבאה מוספת התכונה eyes לכל האובייקטים ששייכים למחלקה Student:
Student.prototype.eyes
= null;
מספרי האינדקס שניתנים לתכונות שיש באובייקט
בגרסאות
הראשונות של JavaScript
ניתן היה להתייחס אל כל אחת מתכונותיו של אובייקט או באמצעות ציון שמו או באמצעות
מספרו הסידורי. כל אחת משתי הדרכים הייתה אפשרית. כיום, כאשר פונים לתכונה של
אובייקט יש לפנות אליה באופן שבו היא הוגדרה:
אם היא הוגדרה
באמצעות מתן שמה בין אם בתוך ה-constructor
ובין אם מחוצה לו לאחר שהאובייקט כבר נוצר אז חייבים לפנות אליה באמצעות ציון שמה.
objectName.property
= value;
או
objectName[property]
= value;
לחילופין, אם
התכונה התווספה לאחר שהאובייקט כבר הוגדר, ובהוספתה צוין מספרה הסידורי אז
בהתייחסות לאובייקט כאל מערך ניתן יהיה לפנות אליה תוך ציון מספרה הסידורי בתוך
הסוגריים המרובעות.
התכנית הבאה
מדגימה זאת.
<!-- file name : propertyIndex.html -->
<!-- 2000(c) Zindell Publishing House Ltd.
-->
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.0//EN">
<HTML>
<HEAD>
<TITLE>propertyIndex.html</TITLE>
<SCRIPT LANGUAGE="JavaScript1.3">
var myTV;
myTV = {brand:
{company:"SONY" , type:"ex-443"},
size: 54, country: "JAPAN", price:12200};
myTV[10]="JavaTV";
document.write("<BR>myTV[10] = " + myTV[10]);
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
כאשר מדובר באובייקט
שהגיע ממסמך ה-HTML,
כגון האובייקט forms,
וליתר דיוק, המערך forms
ניתן להתייחס לתכונותיו של האובייקט (אלה הם, למעשה, איברי המערך) על פי מספרי
האינדקס שלהם או על פי שמם (אם הוא הוגדר). בדרך זו, אם המסמך כולל בתוכו ארבעה
מרכיבי FORM, ניתן להתייחס למרכיב ה-FORM
השני בדרך הבאה:
document.forms[1]
אם ניתן שם
למרכיב ה-FORM הנ"ל (myForm,
לדוגמא) אז ניתן להתייחס אליו גם בכל אחת משתי הדרכים הבאות:
document.myForm
document["myForm"]
הגדרת מתודות באובייקט
מתודה היא פונקציה
שקשורה לאובייקט. מתודה ניתן להפעיל אך ורק אם פונים אליה כדי להפעילה על אובייקט
מסויים שקשור אליה.
כדי להגדיר מתודה, תחילה
יש להגדיר אותה כפונקציה רגילה. לאחר מכן יש לחבר בינה לבין אובייקט קיים באמצעות
כתיבת שם האובייקט הקיים, ציון נקודה אחת מפרידה אחריו וציון השם שרוצים לתת
למתודה. בהמשך השורה יש לרשום את סימן השוויון, ומייד אחריו יש לרשום את שמה של
הפונקציה שרוצים לחבר אל האובייקט ובכך להפוך אותה למתודה.
להלן התחביר שהוסבר:
שם הפונקציה =
שם המתודה . שם האובייקט
הקריאה להפעלתה
של מתודה נעשית, בדומה לשפות אחרות, תוך ציון שמו של האובייקט כשמייד אחריו נקודה
מפרידה ואחריה שם המתודה שמפעילים. אם המתודה אמורה לקבל ערכים אז מוסיפים בהמשך
סוגריים עגולות ומציינים בתוכן את הערכים שנשלחים.
בדומה ל-Java גם ב-JavaScript
מוגדרת המילה השמורה this.
במילה זו ניתן להשתמש בתוך מתודות כדי להתייחס לאובייקט שעליו המתודה פועלת.
בכתיבת הפונקציה שרוצים שתהיה מתודה יש לעשות שימוש במילה השמורה this בכל פניה למשתנים של האובייקט.
התכנית הבאה
מדגימה הגדרה של פונקציה וקישורה לאובייקט כדי שתהיה מתודה.
<!-- file name : simpleMethod.html -->
<!-- 2000(c) Zindell Publishing House Ltd.
-->
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.0//EN">
<HTML>
<HEAD>
<TITLE>simpleMethod.html</TITLE>
<SCRIPT LANGUAGE="JavaScript1.3">
var bestStudent;
bestStudent =
{name:"Dany", id:12342341, math:96,
english:98, economy:94};
function avg()
{
var average = (this.math
+ this.english + this.economy)/3;
return average;
}
bestStudent.getAverage = avg;
document.write("average="
+ bestStudent.getAverage());
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
לחילופין, ניתן
לציין את החיבור שנעשה בין הפונקציה שהוגדרה לאובייקט בתוך הגדרתו של constructor ובכך לגרום למתודה שהתקבלה להיות קשורה לכל אובייקט שיווצר
באמצעות אותו constructor,
בדומה לשפות תכנות מונחות עצמים אחרות.
התכנית הבאה
מדגימה זאת.
<!-- file name : simpleMethod2.html -->
<!-- 2000(c) Zindell Publishing House Ltd.
-->
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.0//EN">
<HTML>
<HEAD>
<TITLE>simpleMethod2.html</TITLE>
<SCRIPT LANGUAGE="JavaScript1.3">
function average()
{
var result;
result = this.math +
this.english + this.economy;
return result/3;
}
function Student(name, age, math,
english, economy)
{
this.name = name;
this.age = age;
this.math = math;
this.english = english;
this.economy = economy;
this.getAverage =
average;
}
var bestStudent = new
Student("Dany", 28, 98, 92, 86);
var youngStudent = new
Student("Ron", 24, 80, 90, 85);
document.write("The average of
the bestStudent is =" + bestStudent.getAverage());
document.write("<BR>The
average of the bestStudent is =" + youngStudent.getAverage());
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
המילה השמורה this
המילה השמורה this ממלאת ב-JavaScript
את אותו התפקיד שהיא ממלאת ב-Java.
כאשר כותבים את המילה this
בתוך מתודה היא מהווה reference
לאובייקט שעליו המתודה פועלת. לכתוב את המילה this זה כמו לכתוב את שם האובייקט שעליו המתודה מופעלת.
בחלק הקודם המילה השמורה this
קיבלה הדגמה.
את המילה השמורה
this ניתן לכתוב גם בתוך מספר מרכיבי HTML. כך למשל, ניתן לכתוב אותה בתוך התגית <INPUT>
כאשר היא מייצגת מרכיב ב-FORM.
אל תוך התגית <INPUT> ניתן להוסיף את התכונה onChange
ולתת לה כערך מחרוזת תווים שכוללת בתוכה קריאה להפעלתה של פונקציה שנכתבה ב-JavaScript. בקריאה להפעלת הפונקציה ניתן לשלב את המילה this ובכך, למעשה, לשלוח אל הפונקציה reference למרכיב ה-INPUT
שבו מדובר.
בהמשך הספר,
יובאו הסברים מפורטים בנוגע לאופן שילובן של פונקציות ב-JavaScript , בתוך מסמך ה-HTML
שיוצרים.
הדוגמא הבאה
מציגה טופס שכולל בתוכו שדה טקסט שבו יש להכניס את הציון, ופונקציה מתאימה שבודקת
האם הערך שהוכנס חוקי. אם הערך שהוכנס איננו חוקי אז מופיעה על כך הודעת אזהרה
מתאימה. האופן שבו גורמים להודעת אזהרה להופיע על המסך יוסבר גם הוא באופן מפורט
בהמשך הספר.
<!-- file name : validateDemo.html -->
<!-- 2000(c) Zindell Publishing House Ltd.
-->
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.0//EN">
<HTML>
<HEAD>
<TITLE>validateDemo.html</TITLE>
<SCRIPT LANGUAGE="JavaScript1.3">
function validateMark(object)
{
if (object.value<0 ||
object.value>100)
alert("The MARK must be in the range 0..100");
}
</SCRIPT>
</HEAD>
<BODY DIR="LTR" LANG="EN">
<FORM>
<H1>FINAL MARK</H1>
your mark :
<INPUT TYPE="text"
NAME="mark" SIZE=5 onChange="validateMark(this)">
<BR>
your age :
<INPUT TYPE="text"
NAME="age" SIZE=5>
</FORM>
</BODY>
</HTML>
שחרור הזיכרון שמשמש אובייקטים באמצעות המילה השמורה delete
לאחר שנוצר
אובייקט מוקדש מקום בזיכרון אשר משמש לאחסון ערכי תכונותיו. בדומה לשפת התכנות C++ גם ב-JavaScript
קיימת המילה השמורה delete. מילה
זו בצירוף שמו של משתנה שהוא אובייקט תגרום לשחרור הזיכרון שמשמש את אותו אובייקט,
ובמלים אחרות, תגרום למחיקתו.
דרך נוספת
לשחרור הזיכרון שמשמש לאחסונו של אובייקט היא באמצעות השמת הערך המיוחד null אל תוך המשתנה שמכיל את ה-reference
לאובייקט.
בהסברים שמובאים
בספר אינני נוהג להתמקד בכך שמשתנה שקרוי אובייקט מכיל, למעשה, את ה-reference (הכתובת) של האובייקט (בדומה ל-Java). הסיבה לכך היא רצוני להקל עד כמה שניתן. עם זאת, אם הנך מכיר את
שפת התכנות Java
המלצתי לך היא להקפיד ולהבין את הדברים באופן המדויק ביותר. כלומר, משתנה, שרובנו
רואים בו אובייקט, מכיל, למעשה, את ה-reference
לאובייקט. המשתנה, אם רוצים לדייק, איננו האובייקט עצמו.
התכנית הבאה
מדגימה את שתי הדרכים שהוצגו.
<!-- file name : deleteObject.html -->
<!-- 2000(c) Zindell Publishing House Ltd.
-->
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.0//EN">
<HTML>
<HEAD>
<TITLE>deleteObject.html</TITLE>
<SCRIPT LANGUAGE="JavaScript1.3">
function Student(name, id, age)
{
this.name = name;
this.id = id;
this.age = age;
}
function getDetails(std)
{
document.write("<BR>name :" + std.name);
document.write("<BR>id :" + std.id);
document.write("<BR>age :" + std.age);
}
oldStd = new
Student("Dov", 4443231, 42);
bestStd = new
Student("Danny", 2433223, 29);
getDetails(oldStd);
getDetails(bestStd);
delete oldStd;
bestStd = null;
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
משפט
ה-with
משפט זה קובע אובייקט
מסוים כאובייקט ברירת המחדל עבור קבוצה של משפטים.התחביר של משפט זה הוא כדלקמן:
(שם האובייקט) with
{
קבוצה של משפטים
ב-JavaScript
}
המשמעות היא
שבזמן ריצה כל תכונה וכל מתודה שמופיעה בין שני הסוגריים המסולסלות נבדקת אם היא
שייכת לאובייקט שאליו משפט ה-with
מתייחס. אם השייכות קיימת אז תופעל המתודה של האובייקט או שהערך של התכונה יהיה
כפי שהוא נקבע באובייקט.
התכנית הבאה
מדגימה את השימוש במשפט ה-with.
<!-- file name : withDemo.html -->
<!-- 2000(c) Zindell Publishing House Ltd.
-->
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.0//EN">
<HTML>
<HEAD>
<TITLE>withDemo.html</TITLE>
<SCRIPT LANGUAGE="JavaScript1.3">
var bestStudent;
bestStudent =
{name:"Dany", id:12342341, math:96,
english:98, economy:94};
function avg()
{
var average = (this.math
+ this.english + this.economy)/3;
return average;
}
bestStudent.getAverage = avg;
with(bestStudent)
{
name = "Ron";
id = 23432342;
math = 98;
english = 100;
economy = 99;
document.write("average of the best student is : " +
bestStudent.getAverage());
}
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
תרגילים
1. כתוב/כתבי תכנית
שכוללת בתוכה יצירה של אובייקט (בדרך של Object Initializer) אשר מתאר עוגה. כבר בעת יצירתו של האובייקט ייקבעו תכונותיו
והערכים של כל אחת מהן למעט כמות היין. כמות היין שיש להוסיף ביצירת העוגה היא
תכונה שתתווסף לאובייקט לאחר שהוא כבר נוצר (ב-JavaScript ניתן להוסיף תכונות בזמן ריצה לאובייקטים שכבר
נוצרו). לאחר הוספת התכונה הנוספת, התכנית תדפיס באמצעות התייחסות לאובייקט כאל
מערך את כל ערכי התכונות שיש בו.
2. כתוב/כתבי תכנית
שכוללת בתוכה הגדרה של constructor
שמשמש ליצירת אובייקט שמתאר עוגה. בהמשך התכנית תיצור שני אובייקטים באמצעות ה-constructor שהוגדר. התכנית תדפיס את התכונות ואת הערכים שבכל אחד משני
האובייקטים באמצעות הלולאה for..in. לאחר הדפסת התכונות והערכים של שני
האובייקטים התכנית תוסיף לכל אחד משני האובייקטים תכונה נוספת ששמה bakeName (כלומר, שמו של האופה). הוספת התכונה החדשה תיעשה באמצעות התכונה prototype. כעת התכנית תקבע את ערכה של התכונה החדשה בכל אחד משני
האובייקטים, ותדפיס שוב את תכונותיהם וערכיהם באמצעות הלולאה for..in.
3. כתוב/כתבי תכנית
שכוללת את יצירתו של אובייקט בשם classGroup
אשר מתאר את כיתתך. אובייקט זה יכלול בתוכו תכונות כמספר התלמידים. כל אחת
מהתכונות הללו תתאר תלמיד אחר. כל תלמיד יתואר על ידי אובייקט שיווצר באמצעות constructor מתאים שיוגדר. מתוך כל אובייקט שמתאר תלמיד ניתן יהיה להפעיל
מתודה אשר מחשבת ומחזירה את הממוצע שלו. התכנית תכלול בדיקה מקיפה של מרכיביה.
בתום התכנית, ישוחרר הזיכרון, ששימש את כל אחד מהאובייקטים שהופיעו בה, באמצעות
המילה השמורה delete.
4. כתוב/כתבי תכנית
שכוללת אל יצירתו של אובייקט שמתאר תעודת בגרות. אל האובייקט תקושר פונקציה (ובכך
היא תהיה, למעשה, למתודה) אשר תחשב ותחזיר את ממוצע הציונים. בכתיבת התכנית יש
לעשות שימוש במשפט ה-with.
2000 © All the rights reserved to Haim Michael & Zindell
Publishing House Ltd.
No
parts of the contents of this paper may be reproduced or transmitted in any
form by any means
without
the written permission of the publisher !
This book can be used for personal use only !!!
Brought
to you by Zindell
(http://www.zindell.com)
לנוחיותך, להלן תוכן
העניינים של הספר: