לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #2  
ישן 07-05-2008, 20:09
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 1 שנכתבה על ידי PDP שמתחילה ב "שאלה בjs . ידיעת שם המשתנה."

הכל תלוי כמובן במה אתה רוצה בדיוק לעשות.
אני חושב שהמקרים היחידים בהם תזדקק לדעת את שם האובייקט, יהיו לצורך בדיקת הקוד (debuging), כיון שבתוך הקוד עצמו ממש אין חשיבות לשמות המשתנים והפונקציות, הם רק משמשים את המפתח בשעת הכתיבה לצורך פניה למשתנה, פונקציה או מחלקה הרצויה, כך שגם דרך אחרת שתאפשר לנו פניה לאובייקט הרצוי תפתור את הבעיה ואין לנו צורך לדעת את שם האובייקט (וזה ככל הידוע גם לא אפשרי - לכן אני מיד פונה לדרך החילופית שבהחלט קיימת).

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

קוד לדוגמה:

קוד:
var diver = function() { var thisObj = this; this.draw = function() { return thisObj; // Return pointer to main_var object } } var main_var = new diver(); main_var.draw();

השיטה draw תחזיר אותו ערך שיחזיר הביטוי main_var, כיון שמשתנה המחלקה thisObj מכיל בעצם מצביע לאובייקט עצמו, הוא בעצם האובייקט main_var.

קוד:
main_var.draw() === main_var.draw().draw().draw().draw().draw().draw()

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

נערך לאחרונה ע"י ישראל K בתאריך 07-05-2008 בשעה 20:12.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 08-05-2008, 17:45
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 3 שנכתבה על ידי PDP שמתחילה ב "שרולקה"

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

פה אכן נראה שאתה צריך את שם האובייקט וכפי שציינתי, אני לא חשוב שזה אפשרי, לפחות לא בגירסת ה-JS הנפוצה (ישנן גירסאות עדכניות יותר (1.8), כמו לדוגמה זו המשולבת בשועל בן השלוש, אך לא כדאי לפתח רק עבור גירסה שאינה נפוצה מספיק - ציעוד מפורט תוכל למצוא באלתר הפיתוח של מוזילה ובקישורים נוספים שתוכל למצוא שם).

אני מציע על פתרון פשוט כמו בדוגמה/אות הבאה:
קוד:
var diver = function(objectName) { this.objectName = objectName; this.draw = function() { var str = ''; str += '<div id="'+ this.objectName +'">Ok</div>'; document.write(str); } } var main_var = new diver('main_var'); var main_var = new diver(); main_var.objectName = 'main_var'; main_var.draw();


הערה קטנה וחשובה:
ממש ממש [ממש, ממש], לא מומלץ להשתמש ב-document.write, זה גורם ל"רינדור" הדף מחדש ומבחינת דרישת ביצועי המחשב הוא שווה ערך לעשרות או מאות אלפי חישובי js פשוטים (כיון שהוא מאלץ את מנוע הדפדפן לנתח את הדף מחדש).
לצורך שינויים בקוד התצוגה השתמש ב-dom.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

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

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 18:57

הדף נוצר ב 0.05 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר