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

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

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

איך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?

מתוזמן נעוץ נעול הועבר תכנות
22 פוסטים 4 כותבים 257 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    אהרן
    כתב ב נערך לאחרונה על ידי
    #1

    בפונקציה הזו, למשל, אני לא יכול להשתמש ב-this של מופע חדש שאני מייצר

    const asyncMap = (arr, task) => Promise.all(
    		arr.map((row, idx, arr) => new Promise((reslove) => task(row, reslove, idx, arr)))
    );
    

    פונקצית החץ לא אמור ליצור א"ז?

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

      @אהרן אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

      פונקצית החץ לא אמור ליצור א"ז?

      לא. הפוך, פונקציית חץ אין לו this של עצמו אלא של ה-scope שמסובב אותו.
      אפשר להשתמש ב-function.apply כדי לאגוד את הפונקציה לאובייקט שאתה רוצה.

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

      א תגובה 1 תגובה אחרונה
      2
      • yossizY yossiz

        @אהרן אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

        פונקצית החץ לא אמור ליצור א"ז?

        לא. הפוך, פונקציית חץ אין לו this של עצמו אלא של ה-scope שמסובב אותו.
        אפשר להשתמש ב-function.apply כדי לאגוד את הפונקציה לאובייקט שאתה רוצה.

        א מנותק
        א מנותק
        אהרן
        כתב ב נערך לאחרונה על ידי
        #3

        @yossiz אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

        @אהרן אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

        פונקצית החץ לא אמור ליצור א"ז?

        לא. הפוך, פונקציית חץ אין לו this של עצמו אלא של ה-scope שמסובב אותו.

        נסיתי לשנות א"ז לפונקציות רגילות ולא עזר.

        אפשר להשתמש ב-function.apply כדי לאגוד את הפונקציה לאובייקט שאתה רוצה.

        עשיתי א"ז ע"י bind, אבל לא נוח להוסיף א"ז לכל הרצה של הפונקציה.

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

          @אהרן תעשה שכל המחלקות שלך יירשו ממחלקת אם עם הפונקציה הזו

          א תגובה 1 תגובה אחרונה
          1
          • י יוסף בן שמעון

            @אהרן תעשה שכל המחלקות שלך יירשו ממחלקת אם עם הפונקציה הזו

            א מנותק
            א מנותק
            אהרן
            כתב ב נערך לאחרונה על ידי
            #5

            @יוסף-בן-שמעון אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

            @אהרן תעשה שכל המחלקות שלך יירשו ממחלקת אם עם הפונקציה הזו

            😰
            זו האפשרות היחידה?

            י תגובה 1 תגובה אחרונה
            0
            • א אהרן

              @יוסף-בן-שמעון אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

              @אהרן תעשה שכל המחלקות שלך יירשו ממחלקת אם עם הפונקציה הזו

              😰
              זו האפשרות היחידה?

              י מנותק
              י מנותק
              יוסף בן שמעון
              כתב ב נערך לאחרונה על ידי
              #6

              @אהרן אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

              האפשרות היחידה

              אולי תפרט מה הצורך שלך בדיוק

              א תגובה 1 תגובה אחרונה
              0
              • י יוסף בן שמעון

                @אהרן אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

                האפשרות היחידה

                אולי תפרט מה הצורך שלך בדיוק

                א מנותק
                א מנותק
                אהרן
                כתב ב נערך לאחרונה על ידי
                #7

                @יוסף-בן-שמעון
                להיות מסוגל להשתמש בthis של המופע שקורא לפונקציה הנ"ל.

                י תגובה 1 תגובה אחרונה
                0
                • א אהרן

                  @יוסף-בן-שמעון
                  להיות מסוגל להשתמש בthis של המופע שקורא לפונקציה הנ"ל.

                  י מנותק
                  י מנותק
                  יוסף בן שמעון
                  כתב ב נערך לאחרונה על ידי
                  #8

                  @אהרן אז תעביר אותו כפרמטר

                  א 2 תגובות תגובה אחרונה
                  2
                  • י יוסף בן שמעון

                    @אהרן אז תעביר אותו כפרמטר

                    א מנותק
                    א מנותק
                    אהרן
                    כתב ב נערך לאחרונה על ידי אהרן
                    #9

                    @יוסף-בן-שמעון

                    ~~ככה!! ~~

                    const asyncMap = (arr, task) => Promise.all(
                        arr.map((row, idx, arr) => new Promise((reslove) => task.call(null ,row, reslove, idx, arr)).catch(console.log))
                    )
                    
                    

                    נראה שה-this של הגלובל סקופ הוא undefined
                    צריך לאפס אותו ל-null

                    נראה שטעיתי, רגע

                    תגובה 1 תגובה אחרונה
                    0
                    • י יוסף בן שמעון

                      @אהרן אז תעביר אותו כפרמטר

                      א מנותק
                      א מנותק
                      אהרן
                      כתב ב נערך לאחרונה על ידי
                      #10

                      @יוסף-בן-שמעון אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

                      @אהרן אז תעביר אותו כפרמטר

                      איך console.log כן מכניס את הדיס הנכון?

                      dovidD תגובה 1 תגובה אחרונה
                      0
                      • א אהרן

                        @יוסף-בן-שמעון אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

                        @אהרן אז תעביר אותו כפרמטר

                        איך console.log כן מכניס את הדיס הנכון?

                        dovidD מנותק
                        dovidD מנותק
                        dovid
                        ניהול
                        כתב ב נערך לאחרונה על ידי
                        #11

                        @אהרן תפרט את הוכחתך מהconsole.log.

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

                          @אהרן תפרט את הוכחתך מהconsole.log.

                          א מנותק
                          א מנותק
                          אהרן
                          כתב ב נערך לאחרונה על ידי
                          #12

                          @dovid
                          אויש כמה שטויות 🤒

                          התכוונתי להביא את ההוכחה מ-setTimeout
                          אבל אז גליתי שהוא מקבל את ה-this בגלל הפונקציה האנונימית שכתובה מתוך הפונקציה שקוראת וממילא מקבלת את ה-this

                                  setTimeout( _=> myFunc() )
                          
                          

                          אבל ב-asyncMap זה לא שייך מכיון שצריך להכניס ארגומנטים לתוך הקול-בק.

                          dovidD תגובה 1 תגובה אחרונה
                          0
                          • א אהרן

                            @dovid
                            אויש כמה שטויות 🤒

                            התכוונתי להביא את ההוכחה מ-setTimeout
                            אבל אז גליתי שהוא מקבל את ה-this בגלל הפונקציה האנונימית שכתובה מתוך הפונקציה שקוראת וממילא מקבלת את ה-this

                                    setTimeout( _=> myFunc() )
                            
                            

                            אבל ב-asyncMap זה לא שייך מכיון שצריך להכניס ארגומנטים לתוך הקול-בק.

                            dovidD מנותק
                            dovidD מנותק
                            dovid
                            ניהול
                            כתב ב נערך לאחרונה על ידי
                            #13

                            @אהרן אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

                            אבל ב-asyncMap זה לא שייך מכיון שצריך להכניס ארגומנטים לתוך הקול-בק.

                            מתחילת האשכול לא הבנתי מה רע בפונקציה היפה שעשית,
                            איפה צריך this.

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

                              @אהרן אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

                              אבל ב-asyncMap זה לא שייך מכיון שצריך להכניס ארגומנטים לתוך הקול-בק.

                              מתחילת האשכול לא הבנתי מה רע בפונקציה היפה שעשית,
                              איפה צריך this.

                              א מנותק
                              א מנותק
                              אהרן
                              כתב ב נערך לאחרונה על ידי
                              #14

                              @dovid אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

                              @אהרן אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

                              אבל ב-asyncMap זה לא שייך מכיון שצריך להכניס ארגומנטים לתוך הקול-בק.

                              איפה צריך this.

                              בתוך ה-task

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

                              dovidD תגובה 1 תגובה אחרונה
                              0
                              • א אהרן

                                @dovid אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

                                @אהרן אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

                                אבל ב-asyncMap זה לא שייך מכיון שצריך להכניס ארגומנטים לתוך הקול-בק.

                                איפה צריך this.

                                בתוך ה-task

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

                                dovidD מנותק
                                dovidD מנותק
                                dovid
                                ניהול
                                כתב ב נערך לאחרונה על ידי dovid
                                #15

                                @אהרן אההממ אז המתודות הללו נדפקות בכל קלאבק ששייך לסקופ שונה?
                                אם כשמעבירים את זה כפונקציה ללא call זה עובד, אז ככה אמור לעבוד יופי:

                                const asyncMap = (arr, task) => Promise.all(
                                    arr.map((row, idx, arr) => new Promise(reslove => task(row, reslove, idx, arr)).catch(console.log))
                                )
                                

                                אני אישית בחיים לא פונה לthis הארור של js...

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

                                  @אהרן אההממ אז המתודות הללו נדפקות בכל קלאבק ששייך לסקופ שונה?
                                  אם כשמעבירים את זה כפונקציה ללא call זה עובד, אז ככה אמור לעבוד יופי:

                                  const asyncMap = (arr, task) => Promise.all(
                                      arr.map((row, idx, arr) => new Promise(reslove => task(row, reslove, idx, arr)).catch(console.log))
                                  )
                                  

                                  אני אישית בחיים לא פונה לthis הארור של js...

                                  dovidD מנותק
                                  dovidD מנותק
                                  dovid
                                  ניהול
                                  כתב ב נערך לאחרונה על ידי
                                  #16

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

                                  const asyncMap = (arr, task) => Promise.all(
                                      arr.map((row, idx, arr) => task(row).catch(console.log))
                                  )
                                  
                                  
                                  • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                                  • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                                  א תגובה 1 תגובה אחרונה
                                  0
                                  • dovidD dovid

                                    @אהרן אההממ אז המתודות הללו נדפקות בכל קלאבק ששייך לסקופ שונה?
                                    אם כשמעבירים את זה כפונקציה ללא call זה עובד, אז ככה אמור לעבוד יופי:

                                    const asyncMap = (arr, task) => Promise.all(
                                        arr.map((row, idx, arr) => new Promise(reslove => task(row, reslove, idx, arr)).catch(console.log))
                                    )
                                    

                                    אני אישית בחיים לא פונה לthis הארור של js...

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

                                    @dovid אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

                                    @אהרן אההממ אז המתודות הללו נדפקות בכל קלאבק ששייך לסקופ שונה?

                                    גם כשקאלבק שייך לאותו סקופ
                                    הוא מקבל סקופ חדש, של יצירת asyncMap.

                                    אם כשמעבירים את זה כפונקציה ללא call זה עובד

                                    זה לא

                                    תגובה 1 תגובה אחרונה
                                    0
                                    • dovidD dovid

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

                                      const asyncMap = (arr, task) => Promise.all(
                                          arr.map((row, idx, arr) => task(row).catch(console.log))
                                      )
                                      
                                      
                                      א מנותק
                                      א מנותק
                                      אהרן
                                      כתב ב נערך לאחרונה על ידי
                                      #18

                                      @dovid אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

                                      למה שלא תעצב שהם יחזירו בעצמם פרומייז

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

                                      במקרה שכן קצר יותר להשתמש ישירות ב-Promise.all.

                                      תגובה 1 תגובה אחרונה
                                      1
                                      • י מנותק
                                        י מנותק
                                        יוסף בן שמעון
                                        כתב ב נערך לאחרונה על ידי
                                        #19

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

                                        callToFunc(this.callback)
                                        

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

                                        callToFunc(() => this.callback())
                                        
                                        yossizY תגובה 1 תגובה אחרונה
                                        2
                                        • י יוסף בן שמעון

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

                                          callToFunc(this.callback)
                                          

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

                                          callToFunc(() => this.callback())
                                          
                                          yossizY מנותק
                                          yossizY מנותק
                                          yossiz
                                          כתב ב נערך לאחרונה על ידי yossiz
                                          #20

                                          @יוסף-בן-שמעון אמר באיך אני מייצר פונקציה בגלובל שה-this שלה יהיה ה-this של המופע שמפעיל אותו?:

                                          אם זו הבעיה שלך, הפיתרון הוא להעביר את הקולבק כך:
                                          ‎callToFunc(() => this.callback())‎

                                          או כך: callToFunc(function() { return this.callback() })‎
                                          (אני רק מבהיר שזה לא קשור לפונקציות חצים.)

                                          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

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


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

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

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