דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. שאלות בסיסיות ב-js או בכלל בתכנות

שאלות בסיסיות ב-js או בכלל בתכנות

מתוזמן נעוץ נעול הועבר ארכיון code613m
20 פוסטים 3 כותבים 949 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מנותק
    dovidD מנותק
    dovid
    ניהול
    כתב ב נערך לאחרונה על ידי
    #10

    @אהרן

    function myModule() {
        ...
    }
    var myModule = new myModule(); //creating the instanceמה זה עושה ??
    

    מה עושה שמכניסים את אותו משתנה לתוכו?

    כשכותבים new לפני קריאה לפונקציה, אז:

    1. במידה והפונקציה מחזירה אובייקט (לא פרימיטיבי כטקסט ומספר כלומר כזה שהלוג שלו מיוצג עם סוגריים {}), אז הוא מוחזר למשתנה.
    2. במידה ואיננה מחזירה אובייקט (או שאיננה מחזירה כלום או טיפוס פרימיטיבי) אז נוצר אובייקט חדש שמהווה "קרקע" (בתכנותית: מופע, instance) לthis שבפונקציה. בלי ה"קרקע" הזו הפונקציה הנקראת "דורכת" על "קרקע" הפונקציה הקוראת.

    הדגמה:

    function func() {
    	this.a = "variable ";
    	return "function result...";
    }
    
    var resultWithoutNew = func();
    console.log(resultWithoutNew); //function result...
    console.log(a); // variable
    console.log(resultWithoutNew.a); // undefined
    
    a = 123;
    
    var resultWithNew = new func();
    console.log(resultWithNew); // { a: 'variable ' }
    console.log(a); // 123
    console.log(resultWithNew.a); // variable
    

    הnew מאפשר לתת "סקופ" חדש למה שהפונקציה מחזירה וככה ליצור מופעים שונים של אותו מחלקה-אב טיפוס על מאפייניו והפונקציות שלו.

    פורסם במקור בפורום CODE613 ב04/09/2015 12:35 (+03:00)

    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
    תגובה 1 תגובה אחרונה
    1
    • א מנותק
      א מנותק
      אהרן
      כתב ב נערך לאחרונה על ידי
      #11

      אשמח תשפרט את הרקע, מי צועק ואיפה בדיוק.

      ide c9

      לכידה.JPG

      פורסם במקור בפורום CODE613 ב04/09/2015 13:29 (+03:00)

      תגובה 1 תגובה אחרונה
      0
      • dovidD מנותק
        dovidD מנותק
        dovid
        ניהול
        כתב ב נערך לאחרונה על ידי
        #12

        תלונתו היא שאתה ניגש לvalur בלי לבדוק קודם שהerror ריק (אם תוסיף if (!err) אזי הוא ישתוק כנראה), אבל נשגב מבינתי איך ה"חוזה" הזה מוכר לIDE.

        פורסם במקור בפורום CODE613 ב06/09/2015 11:15 (+03:00)

        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
        תגובה 1 תגובה אחרונה
        0
        • א מנותק
          א מנותק
          אהרן
          כתב ב נערך לאחרונה על ידי
          #13

          ובהרצה זה כן מובן?

          פורסם במקור בפורום CODE613 ב06/09/2015 11:16 (+03:00)

          תגובה 1 תגובה אחרונה
          0
          • dovidD מנותק
            dovidD מנותק
            dovid
            ניהול
            כתב ב נערך לאחרונה על ידי
            #14

            @אהרן

            ובהרצה זה כן מובן?

            היינו הך.

            פורסם במקור בפורום CODE613 ב06/09/2015 11:20 (+03:00)

            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
            תגובה 1 תגובה אחרונה
            0
            • א מנותק
              א מנותק
              אהרן
              כתב ב נערך לאחרונה על ידי
              #15

              אז עוד שאלה על JS......
              לשאלה הזו יש הרבה חברים 🙂

              פורסם במקור בפורום CODE613 ב06/09/2015 11:21 (+03:00)

              תגובה 1 תגובה אחרונה
              0
              • א מנותק
                א מנותק
                אהרן
                כתב ב נערך לאחרונה על ידי
                #16

                @דוד ל.ט.

                תלונתו היא שאתה ניגש לvalur בלי לבדוק קודם שהerror ריק (אם תוסיף if (!err) אזי הוא ישתוק כנראה), אבל נשגב מבינתי איך ה"חוזה" הזה מוכר לIDE.

                עכשיו מצאתי איך הפונקציה עובדת
                באמת עם try (מושג חדש שלא הכרתי עד שהכרת לי)

                LevelUP.prototype.get = function (key_, options, callback) {
                  var self = this
                    , key
                
                  callback = getCallback(options, callback)
                
                  if (maybeError(this, options, callback))
                    return
                
                  if (key_ === null || key_ === undefined || 'function' !== typeof callback)
                    return readError(this
                      , 'get() requires key and callback arguments', callback)
                
                  options = util.getOptions(options)
                  key = this._codec.encodeKey(key_, options)
                
                  options.asBuffer = this._codec.valueAsBuffer(options)
                
                  this.db.get(key, options, function (err, value) {
                    if (err) {
                      if ((/notfound/i).test(err) || err.notFound) {
                        err = new NotFoundError(
                            'Key not found in database [' + key_ + ']', err)
                      } else {
                        err = new ReadError(err)
                      }
                      return dispatchError(self, err, callback)
                    }
                    if (callback) {
                      try {
                        value = self._codec.decodeValue(value, options)
                      } catch (e) {
                        return callback(new EncodingError(e))
                      }
                      callback(null, value)
                    }
                  })
                }
                

                פורסם במקור בפורום CODE613 ב06/09/2015 21:32 (+03:00)

                תגובה 1 תגובה אחרונה
                0
                • א מנותק
                  א מנותק
                  אהרן
                  כתב ב נערך לאחרונה על ידי
                  #17

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

                  פורסם במקור בפורום CODE613 ב06/09/2015 21:41 (+03:00)

                  תגובה 1 תגובה אחרונה
                  0
                  • dovidD מנותק
                    dovidD מנותק
                    dovid
                    ניהול
                    כתב ב נערך לאחרונה על ידי
                    #18

                    ברור שהIDE מכיר את הפונקציות. אבל פלאי בעיני שהוא אוכף התייחסות לerror. לא ידוע לי שגם ישנו חוק כזה שחייבים לבדוק את ערכה של השגיאה בcatch.
                    אני מחכה לדברי mat.

                    פורסם במקור בפורום CODE613 ב07/09/2015 10:06 (+03:00)

                    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                    תגובה 1 תגובה אחרונה
                    1
                    • M מנותק
                      M מנותק
                      magicode
                      כתב ב נערך לאחרונה על ידי
                      #19

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

                      פורסם במקור בפורום CODE613 ב08/09/2015 14:58 (+03:00)

                      תגובה 1 תגובה אחרונה
                      4
                      • א מנותק
                        א מנותק
                        אהרן
                        כתב ב נערך לאחרונה על ידי
                        #20

                        @דוד ל.ט.

                        @אהרן

                        function myModule() {
                            ...
                        }
                        var myModule = new myModule(); //creating the instanceמה זה עושה ??
                        

                        מה עושה שמכניסים את אותו משתנה לתוכו?

                        כשכותבים new לפני קריאה לפונקציה, אז:

                        1. במידה והפונקציה מחזירה אובייקט (לא פרימיטיבי כטקסט ומספר כלומר כזה שהלוג שלו מיוצג עם סוגריים {}), אז הוא מוחזר למשתנה.
                        2. במידה ואיננה מחזירה אובייקט (או שאיננה מחזירה כלום או טיפוס פרימיטיבי) אז נוצר אובייקט חדש שמהווה "קרקע" (בתכנותית: מופע, instance) לthis שבפונקציה. בלי ה"קרקע" הזו הפונקציה הנקראת "דורכת" על "קרקע" הפונקציה הקוראת.

                        הדגמה:

                        function func() {
                        	this.a = "variable ";
                        	return "function result...";
                        }
                        
                        var resultWithoutNew = func();
                        console.log(resultWithoutNew); //function result...
                        console.log(a); // variable
                        console.log(resultWithoutNew.a); // undefined
                        
                        a = 123;
                        
                        var resultWithNew = new func();
                        console.log(resultWithNew); // { a: 'variable ' }
                        console.log(a); // 123
                        console.log(resultWithNew.a); // variable
                        

                        הnew מאפשר לתת "סקופ" חדש למה שהפונקציה מחזירה וככה ליצור מופעים שונים של אותו מחלקה-אב טיפוס על מאפייניו והפונקציות שלו.

                        לא מבין [כמעט] כלום

                        this.a = "variable ";
                        

                        שווה ל

                        func.a = "variable ";
                        

                        ?

                        איך

                        console.log(a); // variable
                        a = 123;
                        

                        ממתי יש משתנה a?
                        הרי a הוא רק תכונה (property) של func והעתקים ממנו?!


                        var resultWithoutNew = func();
                        

                        אם כן אני צודק שיש 3 'רמות' של העברה בין פונקציה לפונקציה

                        resultWithNew = func();
                        resultWithNew = new func();
                        resultWithNew = func;
                        
                        1. מעביר רק את התוצאה.
                        2. רק את התכונות (במידה ומדובר באוביקט).
                        3. את כל הפונקציה במלואה.
                          ?

                        אם משתמשים באפשרות 3, ואז שעכשיו מכיל בתוכו

                        this.a = "variable ";
                        

                        מי שם ה-this ?

                        סליחה על ההתקפה ותודה על הסבלנות 🙂

                        פורסם במקור בפורום CODE613 ב18/09/2015 16:48 (+03:00)

                        תגובה 1 תגובה אחרונה
                        0
                        תגובה
                        • תגובה כנושא
                        התחברו כדי לפרסם תגובה
                        • מהישן לחדש
                        • מהחדש לישן
                        • הכי הרבה הצבעות


                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

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