מבוא לשפת ג'אווה סקריפט - ECMAScript
![](https://static.wixstatic.com/media/6050af8181fe4595a09f067a31528ed8.jpg/v1/fill/w_980,h_654,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/6050af8181fe4595a09f067a31528ed8.jpg)
שפה זו היא שפה מענינת וגמישה ביותר,
בה משתמשים הרוב המוחלט של האתרים בעולם,
בשפה זו ניתן להעביר פונקציה כפרמטר ולעשות דברים מוזרים ביותר,
זה נראה ששפה זו היא קלה. אך למתקדמים היא שפה מורכבת בהרבה.
לצורך העניין, יש אתרים שמשתמשים בה גם לשפת שרת (Node.js) .
כך ששפה זו היא חוצת גבולות ופלטפורמות.
איך נשתמש בשפה זו, בתכנות מונחה עצמים?
להלן הפיתרון הזמני, עד שיתפתח גירסה חדשה יותר (שכבר בדרך לשוק).
ישנם שתי דרכים ליצור פונקציות,
דרך אחת:
var fast = function(){ name="rabbit" };
השניה:
function fast(){ name="turtle" };
למעשה הדרך השניה היא הנכונה ברמת ההיגיון, שיוצרים פונקציה בשם זה.
והדרך הראשונה, זה שיוצרים פונקציה אנונימית ללא שם,
ושמים אותה על ידי אופרטור ההשמה שווה (=), במשתנה fast.
ישנם שתי דרכים ליצור אובייקטים בשפה זו:
1. על ידי בנאי (Constructor):
לדוגמה:
function Car(color) { this.color = color || "default color "; // למקרה שאין פרמטר יוכנס ערך ברירת המחדל }
var car = new Car('red');
הפונקציה היא הבנאי ועל ידי מילה new, גרמנו להיווצרות אובייקט מסוג מכונית.
למכונית ששמה car (המשתנה שמחזיק את האובייקט ששמנו בו), יש תכונה בשם צבע,
המחזיקה את הערך אדום.
(בדומה לזה ניתן להשים לאובייקט שיטות,
.... this.fast = function;
כי שפה זו מאפשרת להכניס ערכים שהם פונקציות, שאח"כ ניתן להשתמש בהם)
רוצים לראות? הדפיסו:
console.log(car.color)
אגב, ניתן להדפיס גם בשיטה שונה (כמו פנייה למערך אסוציאטיבי):
console.log(car["color"])
2. על ידי סימון המוכר כפורמט ג'ייסון (json):
car = {color: 'red'};
והופ.. יש לנו אובייקט שהושם במשתנה car, בדיוק כמו בדרך הקודמת.
בדוגמה שלנו (json) זה נראה קצר יותר, אך בדוגמה שיש המון אובייקטים עם ערכים שונים בכל משתנה, כמובן נעדיף את הדרך של הבנאי, בה נשלח כל פעם את הערכים כפרמטר והאובייקט יאותחל בערכים שקבענו.
אגב, בגאווה סקריפט הן פונקציות והן מערכים נחשבים לאובייקט.
השמה של אובייקט במשתנה אחר, אינו כמו השמה של משתנה אשר מעביר רק את התוכן אותו הוא מחזיק בתוכו (כמו בהעברת בוליאן, סטרינג או מספר), אלא מעביר רפרנס לאותו כתובת של האובייקט. כך שזה יהיה אובייקט בעל שתי שמות ואפשרויות לגשת אליו (אשר כל שינוי בהם יפעל שינוי באותו האובייקט ששניהם מפנים אליו). לכן אם רוצים אובייקט חדש שהוא עותק של האובייקט הקודם אבל אחר, יש להשתמש בבנאי.
על מנת לדעת איזה ערך מחזיק כל משתנה, אפשר להשתמש בפונקציה typeof, המקבלת את המשתנה כפרמטר ומחזירה את הטיפוס שלו.
שפה זו היא של טיפוסיים דינאמיים (הכוונה שאפשר לשנות את הטיפוס של האובייקט תוך כדי ריצה, לפי הערך שאנחנו שמים בו, לעומת שפות אחרות שהטיפוס קבוע ואין לשנותו), הטיפוסים בג'אווה סקריפט הם:
string -> מקבלת ערך של מחרוזת או תווים אשר נמצאים בין גרשיים ("" או '').
number -> מקבל ערך מספרי שלם או עשרוני.
object -> מקבל אובייקט (להזכיר גם אם קיבלתם את הערך function, זה בגלל שזה פונקציה שניתן להפעילה על ידי קריאה שלה ועם סוגרים אחריה לסימון שזה פונקציה. אבל בל נשכח שזה בעצם טיפוס אובייקט וניתן להשימו בלי סוגריים במשתנה אחר אשר יהיה מצביע לאותו אובייקט).
boolean -> מקבל שני ערכים, true או false.
undefined -> מקבל ערך undefined בלבד וזה הערך הדיפולטיבי של כל משתנה שטרם אותחל.
(במקרה שתשימו את הערך null, תקבלו אובייקט ריק. כך תוכלו לאפש אובייקט, כמו ליצור אותו מחדש. מה הקשר בין null ל- object? לא ידוע....).
תנאים ולולאות, המקבלים בסוגרים עגולות ערך או משפט שמחזיר אמת או שקר, יכולים לקבל גם טיפוס שאינו בוליאני ואז מתבצעת המרה לבוליאני.
סטרינג יומר ל-true אלא אם הוא ריק "".
מספר גם יחזיר אמת אלא אם הוא 0 או NaN שהוא טיפוס מספרי שאינו מכיל מספר (not a number) .
אובייקט מחזיר אמת אלא אם הוא אובייקט שנוצר מ- nell, כמו אובייקט בוליאני שהועבר לו הערך (false).
undefined כמובן גם יחזיר false.
על מנת ליצור מערך, ישנם שתי דרכים:
דרך א':
var arr = new Array(0,1,3)
על מנת לאתחל אותו, ניתן להכניס בין הסוגריים העגולים ערכים אשר מופרדים בפסיקים.
דרך ב':
var arr = [0,1,2]
על מנת לאתחל אותו, ניתן להכניס בין הסוגריים המרובעים ערכים אשר מופרדים בפסיקים.
בשני הדרכים, הפנייה לכל ערך במערך היא על ידי שמו ומיקום האינדקס בסוגריים מרובעים.
ניתן לרשום פונקציה אשר מקבלת מספר בלתי ידוע מראש של פרמטרים, כאשר הסוגריים העגולים ריקים (שלא קבענו אותה למספר פרמטרים מסויים). נפנה אליהם באמצעות המילה arguments .
זהו מערך אוטומתי שנוצר בכל פונקציה, אשר מחזיק את כל הערכים שנשלחים לפונקציה והפנייה אליו היא כמו לכל מערך רגיל.
טיפ:
על מנת להשים מחרוזת ארוכה מאוד בתוך משתנה, צריך שהכל יהיה באותה שורה, אחרת הוא לא יכניס את מה שבשורה השניה.
הדרך הפשוטה להתמודד עם זה, היא לסגור את השורה עם מרכאות המסיימות את הטקסט של שורה הקיימת ולהוסיף אופרטור פלוס בסוף השורה על מת שזה ימשיך לשורה הבאה, וכן הלאה.
יש דרך קיצור המאפשרת לרדת שורות ושכל הטקסט יהיה ברצף בלי מרכאות בכל תחילת שורה וסוף.
והיא על ידי השמת סימן באק-סלאש (\), בכל סוף של שורה.
נ.ב.
פקודות חדשות של 6 ECMAScript
חלקם זמינות ב- Strict mode, של דפדפן הכרום.
על ידי כתיבתם בתוך בלוק הבא:
function myBlock(){ "use strict"; let a=1; const b = 2; }
יצירת מחלקה:
class Car{
var color; // כשכותבים את המילה הזו, זה משתנה עצמאי ופרטי שחי רק בתחום הפונקציה
fast(){}
console.log("car ride …");
}
מחלקה עם בנאי:
class Car { constructor(color){
this.color=color; console.log(“Car is created”); }
}
מחלקת יורשת:
class Motorcycle extends Car{
constructor(){
super();//call to constructor of super class
this.color="black";
}
}