קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ Javascript ♦ מדריך javascript למתחיל 101 (שיטת כתיבה)

מדריך javascript למתחיל 101 (שיטת כתיבה)

עידן יצחקי 4 בדצמבר 2020 אין תגובות

במדריך זה נעבור על צורת הכתיבה הבסיסית ובמקביל נראה את תצורת הכתיבה שאני ממליץ ומעדיף.

מה שאני ממש אוהב בשפה הזו, זה את הגמישות שלה. אם אתם לא ממש מכירים או חדשים לשפה אז אני יכול להגיד לכם שזו השפה הכי גמישה שיצא לי לכתוב בה.

כל משתנה יכול להיות כל דבר ללא הגדרה מראש, אלא בזמן עבודה.

הינה פונקציה בסיסית פשוטה כדי להדגים עד כמה ג'ווה-סקריפט גמיש (הוא אפילו עוד יותר גמיש מזה)

function go() {
    console.log('HI');
    var a = 10;
    console.log(a);
    a = "hi again";
    console.log(a);
    a = ["hi", "again"];
    console.log(a);
    a = [0, 0, 0];
    console.log(a);
}
go();

התוצאות הם:

HI
10
hi again
["hi","again"]
[0,0,0]

נפרק את הפונקציה ונראה מה קרה:

תחילה הגדרנו פונקציה בשם GO שלא מקבלת ערכים מבחוץ.

בכניסה לפונקציה הוצאנו הודעה HI.

אחרי זה, הגדרנו משתנה בשם a והגדרנו לו שהוא שווה ל-10, שימו לב ש-10 ו-"10" זה לא אותו דבר.

אם הייתי עושה a=10+1 זה היה עובד והיינו מקבלים 11 אבל אם הייתי שם אותו בגרשיים זה לא היה עובד והתוצאה הייתה אחרת.

כך שאנחנו יכולים להגיד ש-a הוא number, אחרי זה הגדרנו לו משפט כך שהוא שינה את ההגדרה שלו ל-string, אחרי זה למערך של מילים ולבסוף למערך של מספרים גדול יותר ואין שגיאות הכל בסדר ותקין.

בגלל שהוא כל כך גמיש אין סיבה שאני לא אגדיר אותו כאוביקט שיכול להכיל עוד אוביקטים ופונקציות.

מה היתרון? אני מיד אסביר ואדגם.

כאשר אנחנו מגדירים פונקציה, היא חשופה לעולם, אפשר לקרוא לה גם אחרי שהיא רצה דרך F12 באיזור ה-console.

אם היא חשופה, זה אומר שבמידה שרצים מספר קבצים של JS ששיכים למפתחים שונים או לפלאג-אין כלשהו, הפונקציה שבנינו עלולה להידרס. אם כך מה ניתן לעשות?

אמרנו שניתן להגדיר משתנה כאוביקט שיכול לאכלס כל דבר, אז בואו נראה איך עושים את זה.

var mySuperObj = new Object();

מרגע זה רק mySuperObj יהיה חשוף לעולם ורק אם סקריפט אחר יקים משתנה בדיוק באותו שם, תהיה דריסה…. זה מוריד את הסיכויים לדריסה בהרבה (בעיקר אם השם ארוך ומוזר).

ועכשיו לצרף לו את הפונקציה שבנינו:

mySuperObj.go = function() {
    console.log('hello');
}
mySuperObj.go();

הגדרנו ל-mySuperObj פרופרטי שניקרא go והוא פונקציה, לאחר מכן הפעלנו אותה.

הפונקציות שהם בעצם מאפיינים של האוביקט שלנו חשופות אחת לשניה וכך אנחנו יכולים לעשות את זה:

mySuperObj.logger = function() {
    console.log('inside logger');
}
mySuperObj.go = function() {
    console.log('hello');
    mySuperObj.logger();
}

mySuperObj.go();

הפעלנו את פונקצית go שהדפיסה log ולאחר מכן הפעילה את פונקצית logger.

אם אתם מפתחים אם נסיון אז אתם יודעים שהרבה יותר נוח לנו לעבוד בתצורת קופסאות והיררכיה מאשר שטוח (אם אתם ללא נסיון אז מיד תבינו).

נגיד שאני רוצה ליצר איזור שיטפל באוטנטיקציה (אימות) של משתמש, כדי שלא כל הפונקציות ישבו לי מיד תחת mySuperObj אפשר לעשות את הדבר הבא (מעולה לשימוש ב-intellisense):

mySuperObj.auth = new Object();
mySuperObj.auth.getUserInfo = function(){
    // משיכת המידע מהשדות בדף
}
mySuperObj.auth.sendToServer = function(userInfo){
    // שליחת המידע לשרת
    // הפעלה של פונקצית שגיאה או הצלחה בהתאם לתשובה מהשרת
}
mySuperObj.auth.response = new Object();
mySuperObj.auth.response.error = function(errorInfo){
    // הפעלה של הפונקציה במידה שיש שגיאה
}
mySuperObj.auth.response.success = function(successInfo){
    // הפעלת הפונקציה במידה ותקין
}

אפשר לראות שאיגדנו את כולם תחת auth ואת הצלחה או שגיאה תחת שיכבה נוספת בשם response.

ככה אנחנו יכולים לטפל בסקריפט מאוד גדול ומסורבל ביותר קלות.

כמובן שלא הכל חייב להיות פונקציה או אוביקט, הינה דוגמה לשימוש נוסף:

mySuperObj.title = 'Hi, welcome to the object';
mySuperObj.showTitle = false;

קבלנו מאפיין נוסף שהוא string ועוד אחד שהוא bool, הם זמינים לכל הסקריפט כמו משתנים גלובאלים ואפשר להשתמש ולשנות אותם בקלות.

מה אם היינו רוצים שבסוף כל הסקריפט שכתבנו תהיה הפעלה אוטומטית ?

נכון שאפשר לקרוא לפונקציה כמו שעשינו בהתחלה והיא תתניעה את הקריאה לכל שאר הפונקצויות, אבל ברוח השיטה אנחנו נעשה את זה קצת אחרת.

mySuperObj.activator = (function() {
    mySuperObj.go();
})();

יצרנו פונקציה שמפעילה את עצמה ובתוכה היא מפעילה את פונקצית GO.

אני ממליץ מאוד להשתמש בתחילת הסקריפט (בשורה הראשונה) במלל הבא:

"use strict";

זה ימנע ממכם לעשות טעויות מסויימות בכתיבה, להרחבה בנושא ניתן לקרוא כאן – https://www.w3schools.com/js/js_strict.asp

סיכום כל הקוד שדיברנו עליו:

"use strict";
var mySuperObj = new Object();

mySuperObj.logger = function() {
    console.log('inside logger');
}
mySuperObj.go = function() {
    ad = 'gogo';
    console.log('hello');
    mySuperObj.logger();
}

mySuperObj.auth = new Object();
mySuperObj.auth.getUserInfo = function() {
    // משיכת המידע מהשדות בדף
}
mySuperObj.auth.sendToServer = function(userInfo) {
    // שליחת המידע לשרת
    // הפעלה של פונקצית שגיאה או הצלחה בהתאם לתשובה מהשרת
}
mySuperObj.auth.response = new Object();
mySuperObj.auth.response.error = function(errorInfo) {
    // הפעלה של הפונקציה במידה שיש שגיאה
}
mySuperObj.auth.response.success = function(successInfo) {
    // הפעלת הפונקציה במידה ותקין
}
mySuperObj.title = 'Hi, welcome to the object';
mySuperObj.showTitle = false;
mySuperObj.activator = (function() {
    mySuperObj.go();
})();

מקווה שלא העמסתי יותר מידי ושנהנתם מהפוסט……..

פוסטים קשורים:

תמונת אווירה של תקשורתפונקצית קריאה מ-JS ל-API בסיסית (XMLHttpRequest) לימודי javascript - for loop offor loop of | איטרציה למערכים ב javascript. עם אינדקס תמונת אווירה של עוגיות במחשבעוגיות (Cookies) ליצור ולבדוק ב-JS תמונת אווירה חצים לשינויהמרה של אקסל למערך וממערך חזרה לאקסל בעזרת JS
javascript

אודות המחבר

עידן יצחקי להציג את כל הפוסטים של עידן יצחקי


« פוסט קודם
פוסט הבא »

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

אתם הולכים להיות מופתעים עד כמה HTML יכול להיות חכם ולבצע משהו כל כך מורכב, שאם אנחנו היינו רוצים ליצור

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 תגובה אחת
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד