קטגוריות >> ActionScript >> פורום >> דיון כללי >> framework

framework

  1. הי,
    1. האם framework זה ספריה ?
    2. אם כן האם כל מה שאני צריך לעשות כדי לעבוד לכתוב לפי הסינטקס של הספרייה ואז
    להגדיר את השורה הבאה:
    <script type="text/javascript" src="/path/to/prototype.js"></script>

    מהאתר:...הטקסט לקישור
    3. קיבלתי הודעת שגיעה "fred.loginfo is not a function Line45"
    *********אשמח לקבל עזרה תודה!*********
    4. הקוד שהרצתי בפייר פוקס גירסה 7.0.1
    5. Prototype JavaScript framework, version 1.7
    6. הקוד שהרצתי הוא:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <script type="text/javascript" src="/prototype_js/prototype.js"></script>
      <title></title>
      
      <script language="javascript" type="text/javascript">
    
             function player(n,s,r){
        this.name=n;
        this.score=s;
        this.rank=r;
    }
    
    player.prototype.promte=function(){
        this.rank++;
        console.log("my new rank is: ",this.rank);
    }
    
    var fred=new player("fred,10000,5");
        fred.loginfo();
        fred.promote();
        
    var bob=new player("bob,50,1");
        fred.loginfo();
        fred.promote();
        
    var alise=new player("alise,233,33");
        fred.loginfo();
        fred.promote();
         
        
    </script>
      
      </head>
      <body>
    
    
    
        
      </body>
    </html>
    
    הגב
    0
    0
  2. אנסה לענות:
    1. Framework הוא סוג של ספרייה שניתן לטעון ע"י קובץ ראשי אחד וכל הפונקציונליות שלה אמורה להיות פעילה וזמינה.
    2. כן
    3. לא ניסיתי את הקוד בעצמי אבל משהו שנראה לי מאוד מוזר הוא הקריאה ליצירה של player.
    player מקבל 3 משתנים שונים, אך אתה מעביר לו רק משתנה מחרוזת אחד:
    var fred=new player("fred,10000,5");
    var bob=new player("bob,50,1");
    var alise=new player("alise,233,33");

    צריך להיות
    var fred=new player("fred",10000,5);
    var bob=new player("bob",50,1);
    var alise=new player("alise",233,33);


    מקווה שזה מה שיפתור את הבעיה
    הגב
    0
    0
  3. תודה!
    זה לא פתר את הבעיה.
    אם אני רוצה ללמוד oop בjavascript
    על מה אתה ממליץ.
    הגב
    0
    0
  4. Javascript בעקרון לא תומכת ב-OOP בצורה מלאה הכוללת ירושה, הרחבה ועוד.
    jQuery לדוגמא לא מספקת פתרון לכך, אך יצא לי לתכנת עם המתחרה MooTools שלה דווקא יש אחלה פתרון ל- OOP אמיתי כמו שאתה מכיר עם מחלקות ירושה וכו'.
    אתה מוזמן לבדוק אותה ולראות אם היא מתאימה לך, לדעתי כן (מדריך לדוגמא).

    אם אתה ממש מתעקש לעבוד עם jQuery ישנו פרוייקט המשלב בין השניים ומאפשר ל- jQuery לנהל את כל ה- DOM שלך ול- MooTools לנהל את הקוד - Moo4Q
    הגב
    0
    0
  5. נרשמתי לקבוצת דיון של ה framework Prototypejs

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

    ,


    Hi
    You haven't given your `player` object a method called `loginfo` at
    all, which is why you're getting that error (the property
    `fred.loginfo` will come back `undefined`, which naturally fails when
    you try to execute it via `()`). Also, you have a typo where you're
    creating your `promote` function, it's a `promte` instead, so if you
    got past the `loginfo` call you'd run into the same problem with
    `promote`. And note that in your test code at the end, you create
    `bob` and `alice` instances but you continue to call the methods on
    the `fred` instance.

    You said you're a new programmer. One thing to take away from this is
    that computers are incredibly picky about small details. :)

    FYI, if a function is a constructor function (intended to be used with
    `new`, like your `player` function), the convention is to use initial
    caps on the name, e.g. `Player` with a capital `P`. Other functions
    are written in camelCase. This helps differentiate functions that
    aren't constructor functions from ones that are. It's only a
    convention, but it's very widely-used.

    If you're new to JavaScript, I did a series of blog posts/articles on
    the language you may find helpful (or not, of course). If you start
    here[1] and then work your way forward through the posts
    chronologically, it may be helpful
    .
    הגב
    0
    0
  6. טוב בגדול ההערות שלהם מאוד נכונות ופשוטות ליישום, אסביר הכל.
    בשורה הבאה
    fred.loginfo();

    אתה קורא לפונקציה loginfo, אשר לא מוגדרת בשום מקום ולכן אתה מקבל הודעת שגיאה. אתה צריך להגדיר אותה בדיוק כמו שהגדרת את הפונקציה promote
    דבר נוסף הוא הפונקציה promte, אשר בהגדרה נקראית promote אך בקריאות אליה אתה משתמש ב- promote, פשוט טעות דפוס, יש להחליף את הכל לאותו השם.

    בקוד שלאחר מכן
    var bob=new player("bob,50,1");
        fred.loginfo();
        fred.promote();
         
    var alise=new player("alise,233,33");
        fred.loginfo();
        fred.promote();

    אתה יוצר אובייקטים חדשים bob ו- alise אך עדיין ממשיך לקרוא ל- fred עם הפונקציות שלו.

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

    מקווה שהפעם הכל מובן
    הגב
    0
    0
  7. המון תודה!........

    עזרת לי מאד.
    הגב
    0
    0