הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   javascript scope (https://hosts.co.il/forums/showthread.php?t=92694)

morsrh 11-10-11 17:54

javascript scope
 
אהלן ,

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

אז יש לי קוד שמראה לי שימוש של משתנה גלובאלי שמשמש כקריאה לפונקציה
PHP קוד:

<html>
    <
head>
        <
script type="text/javascript">

            var 
privateFunc null;
            
            (function(){
                function 
closureFunc(text) {
                    
alert(text);
                }
                
privateFunc closureFunc;
            })();
            
            
privateFunc("calling closure function");

        
</script>

    </head>
    <body>
    
    </body>
</html> 

אחלה , הקוד עובד מצויין , אבל פה עולה השאלה שלי

בספרייה JQ אני לא רואה שהם שמים משתנה גלובאלי ואז משתמשים בו לקריאה פונקצייה
אז איך הם מייצאים את הפונקציות ?
יש לזה קשר לפקודה window בסוף הקוד של הספריה שמנפיק את הפונקציות לקוד הגלובאלי?

תודה.

morsrh 13-10-11 19:33

הקפצה - חשוב לי מאוד.

NetanelEdri 13-10-11 20:30

לא הבנתי את הכוונה שלך לגבי JQ , אשמח אם תפרט.

Shay Ben Moshe 13-10-11 20:51

אני מבין למה אתה מתכוון.
מה שעושים ב-jQuery (מהסתכלות עכשיו בקוד) הם שמים את המחלקה ב-windows.jQuery וב-window.$ (אתה יכול לראות את זה בסוף הקוד).
לא קראתי על זה מעולם, אבל כנראה window שקול ל-global scope.

IgalSt 13-10-11 22:30

ציטוט:

נכתב במקור על ידי Shay Falador (פרסם 821681)
לא קראתי על זה מעולם, אבל כנראה window שקול ל-global scope.

זה אכן נכון.
ניתן לגשת לכל משתנה גלובלי באמצעת window.MyVar.
זה גם הגיוני אגב.
באותה הצורה אפשר לגשת למשתנשים ב- parent וב-opener.

morsrh 13-10-11 23:41

ניסיתי לעשות משהו דומה , שלא ממש הלך :

PHP קוד:

<html>
    <
head>
        
    </
head>
    <
body>
        <
div id="linkid" onclick="doit();">
            
s
        
</div>
        <
script type="text/javascript">
            (function(
window){
                var 
mine = {
                    
doit : function ( ){
                        
alert();
                    }
                }
                
window.mine;
            })(
window);

        
</script>
    </body>
</html> 

אני מפספס פה משהו?

Shay Ben Moshe 14-10-11 00:13

בוודאי :)
אתה צריך לעשות השמה של mine לתוך window.mine, לא סתם לרשום window.mine;

morsrh 14-10-11 00:34

את האמת , בJQ לא הבנתי איך הם בסוף הקוד הפקודה עם ה window איך יש להם שתי '=' במשפט אחד , לא נראה לי הגיוני
ומה הכוונה שלך והשמה? אתה יכול להביא לי דוגמא?

Shay Ben Moshe 14-10-11 00:59

קוד:

window.mine = mine
זה כל מה שאתה צריך לעשות...

לגבי jQuery.
לרשום
קוד:

a=b=c
זה בדיוק כמו לרשום
קוד:

b=c
a=b

וזהו :)

morsrh 14-10-11 14:09

שבת חברה , אני מבקש לא להגיב עד צאת שבת


כל הזמנים הם GMT +2. הזמן כעת הוא 07:21.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ