Class ב JS הגדרת משתנים מתוך פונקציה
-
אודה למי שיכול להסתכל על הקוד הזה ולראות איפה הטעות שלי:
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)
-
הסיבה היא ש ה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)
-
הסבר מורחב בעברית לטעות שקרתה לך שהיא טעות נפוצה להרבה מתחילים בJS.
כמו שsofts כתב לך הפתרון הרגיל הוא לשמור בפונקציה את המשתנה this בתוך משתנה אחר, לדוגמא כך:var self = this;
את התקן החדש אינני מכיר, ולא בדיוק הצלחתי להבין מהקישור מהו הפתרון החדש..
פורסם במקור בפורום CODE613 ב20/10/2016 11:58 (+03:00)
-
הוא התכוון שבתקן החדש הפונקצית חץ פותרת את זה, כמו שכתוב בלינק שהבאת בתגובה
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)
-
פוסט חדש בעברית שכתב רן בר זיק על פונקציית הלמדא החדשה בJS (התפרסם היום )
פורסם במקור בפורום CODE613 ב30/10/2016 11:31 (+02:00)