פרק 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)

 

 

 

 

 

 

לנוחיותך, להלן תוכן העניינים של הספר:

 

פרק 1 : הבסיס
פרק 2 : ערכים בסיסיים
פרק 3 : אופרטורים
פרק 4 : משפטי בקרה ולולאות
פרק 5 : פונקציות
פרק 6 : אובייקטים
פרק 7 : אובייקטים מובנים בשפה
פרק 8 : אופן פעולת האובייקטים
פרק 9 : תבניות טקסט
פרק 10 : שילוב של JavaScript ו- HTML
פרק 11 : טיפול באירועים
פרק 12 : האובייקטים שנוצרים בדפדפן
פרק 13 : האובייקט Navigator
פרק 14 : האובייקט Window
פרק 15 : האובייקט Document
פרק 16 : האובייקט Location
פרק 17 : האובייקט History
פרק 18 : יצירת cookies
פרק 19 : האובייקטים Link ו- Anchor
פרק 20 : האובייקט Image
פרק 21 : יצירת Image Map
פרק 22 : האובייקט Form
פרק 23 : טכנולוגית ה- LiveConnect