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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. Class ב JS הגדרת משתנים מתוך פונקציה

Class ב JS הגדרת משתנים מתוך פונקציה

מתוזמן נעוץ נעול הועבר ארכיון code613m
5 פוסטים 3 כותבים 428 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • avrahamA מנותק
    avrahamA מנותק
    avraham
    כתב ב נערך לאחרונה על ידי
    #1

    אודה למי שיכול להסתכל על הקוד הזה ולראות איפה הטעות שלי:

    function anyfunc(f){
    	f()
    }
    
    class MyClass{
        constructor(){
            this.param1 = "";
            this.param2 = "";
        }
        setVar(){
            anyfunc(function(){
                this.param1 = "DSASDASD";
                //console,log(this.param1);
            });
        }
    }
    
    A = new MyClass();
    A.setVar();
    console.log(A.param1);
    

    https://jsfiddle.net/7johfxo4/
    אני מנסה להגדיר מחדש את המשתנה this.param1 בתוך פונקציה מקוננת (ה anyFunc) אבל זה מחזיר שגיאה "Cannot set property 'param1' of undefined" ואיני מבין למה זה undefined.

    פורסם במקור בפורום CODE613 ב20/10/2016 00:55 (+03:00)

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

      הסיבה היא ש הthis הפנימי הוא הglobal ולא הthis של הקלאס הפתרון הוא לשים את ה this בתוך משתנה ולפנות בפנים למשתנה
      מכיוון שאתה משתמש בתקן החדש יש שם טריק חדש שמסדר את זה (בקישור מודגם גם הפתרון הוותיק)
      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

      פורסם במקור בפורום CODE613 ב20/10/2016 01:30 (+03:00)

      תגובה 1 תגובה אחרונה
      3
      • A מנותק
        A מנותק
        avr416
        כתב ב נערך לאחרונה על ידי
        #3

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

        var self = this;
        

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

        פורסם במקור בפורום CODE613 ב20/10/2016 11:58 (+03:00)

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

          הוא התכוון שבתקן החדש הפונקצית חץ פותרת את זה, כמו שכתוב בלינק שהבאת בתגובה

          function anyfunc(f){
              f()
          }
           
          class MyClass{
              constructor(){
                  this.param1 = "";
                  this.param2 = "";
              }
              setVar(){
                  anyfunc(() => {
                      this.param1 = "DSASDASD";
                      //console,log(this.param1);
                  });
              }
          }
           
          A = new MyClass();
          A.setVar();
          console.log(A.param1);
          

          פורסם במקור בפורום CODE613 ב20/10/2016 12:09 (+03:00)

          תגובה 1 תגובה אחרונה
          1
          • A מנותק
            A מנותק
            avr416
            כתב ב נערך לאחרונה על ידי
            #5

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

            פורסם במקור בפורום CODE613 ב30/10/2016 11:31 (+02:00)

            תגובה 1 תגובה אחרונה
            2

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

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

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