JS Frage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • JS Frage

    Hallo

    ich erstelle zur Zeit in Javascript eine neue Klasse.
    Dazu habe ich mehrere Fragen:

    Code:
    function cInput () 
    {
        /*
        *   Zeigt an, ob das Talk fenster im Vordergrund ist.                *       
        *   BOOLEAN PRIVATE @level
        */
        this.talkIsSet = 0;
        
        /*
        *   @Setter für talkIsSet
        *   PUBLIC
        */
        this.get_talkIsSet = function() 
        {
            return this.talkIsSet;
        };
    Meine Fragen:
    1) Kann ich auch Variablen erstellen, die noch weiter unterscheiden, z.B.
    Code:
    this.pressButton.timer
    pressButton beinhaltet alle Werte zur Eingabe.

    2) Ich lerne noch, daher ist jetzt ein guter Zeitpunkt das richtige Kommentieren zu lernen. Ich habe gesehen, dass Leute teilweise ein @ Zeichen benutzen. Kann mir einer einen Hinweis geben, wie ich am besten Kommentieren kann? Ich möchte das Ganze auch bei einem längeren Code noch übersichtlich haben.

    Vielen Dank

    Euern Kurt

  • #2
    Zitat von Kurt001 Beitrag anzeigen
    Kann ich auch Variablen erstellen, die noch weiter unterscheiden, z.B.
    Code:
    this.pressButton.timer
    pressButton beinhaltet alle Werte zur Eingabe.
    Wenn this.pressButton ein Objekt ist, dann kannst du diesem natürlich eine Eigenschaft namens timer verpassen.

    Zum Erzeugen solcher Strukturen interessiert dich vielleicht das Stichwort Objekt-Literal.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Zitat von wahsaga Beitrag anzeigen
      Wenn this.pressButton ein Objekt ist, dann kannst du diesem natürlich eine Eigenschaft namens timer verpassen.

      Zum Erzeugen solcher Strukturen interessiert dich vielleicht das Stichwort Objekt-Literal.
      Danke Objekt Literals ist sehr interessant.
      Das könnte ich benutzen, wenn ich nur ein Objekt habe.

      Aber bei mir geht es darum, dass ich 9 Fenster habe, die alle gleichen Eigenschaften haben.
      Daher setze ich eine Klasse ein.

      Kann ich in Klassenauch Object Literals einfügen?

      Kurt.

      P.S. Werde damit heute Abend mal ein bisschen rumspielen.

      Kommentar


      • #4
        Kommentare

        Hat denn keine einen Hinweis wo ich ein Link zu gutem Kommentieren finde.

        Bitte ....

        Kommentar


        • #5
          Hallo,

          Dokumentationskommentare leitet man im Unterschied zu normalen Blockkommentaren nicht mit /* ein, sondern mit /**.

          Die @-Tags, die man dann verwenden sollte, richten sich oft nach der JavaDoc-Syntax, aber die unterschiedlichen Implementationen in anderen Sprachen als Java führen dazu, dass es z. T. signifikante Unterschiede gibt. Wenn du einen DocGenerator benutzt, der aus deinen Quelltexten eine API-Referenz generiert, musst du dich natürlich nach dessen Syntax richten. Für den menschlichen Leser wird es trotzdem verständlich sein, egal ob da jetzt

          Code:
          /**
           * @type boolean
           * @name isActive
           */
          oder

          Code:
          /**
           * @prop (bool) isActive
           */
          steht. Wenn du also unabhängig von einem DocGenerator deinen Quelltext für dich oder andere Entwickler kommentieren willst, bist du dahingehend nicht festgelegt. Generell ist aber die originale JavaDoc-Syntax eine gute Richtlinie.

          Gruß,

          Amica
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Zitat von Kurt001 Beitrag anzeigen
            Hat denn keine einen Hinweis wo ich ein Link zu gutem Kommentieren finde.

            Bitte ....
            Den hier?

            Peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Zitat von Kurt001 Beitrag anzeigen
              Kann ich in Klassenauch Object Literals einfügen?
              Ja, das geht. Aber die sind dann "gekapselt", d.h du kannst von außen erst mal nicht darauf zugreifen. Da musst du einen kleinen Umweg gehen.
              PHP-Code:
              function Konstruktor()
              {
                var 
              literal =
                {
                  
              eigenschaft 'blubb',
                  
              methode     : function()
                  {
                    
              alert (this.eigenschaft);
                  }    
                }
                return 
              literal;
              }
              var 
              obj = new Konstruktor();
              obj.methode(); 
              Peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Zitat von Kropff Beitrag anzeigen
                Ja, das geht. Aber die sind dann "gekapselt", d.h du kannst von außen erst mal nicht darauf zugreifen. Da musst du einen kleinen Umweg gehen.
                Nicht unbedingt:

                Code:
                function Konstruktor () {
                    this.literal = {
                        eigenschaft: 'blubb',
                        methode: function() {
                            alert(this.literal.eigenschaft);
                        }    
                    };
                }
                var obj = new Konstruktor();
                obj.literal.methode();
                Davon abgesehen ist Kropffs Ansatz mit return literal imho nicht zu empfehlen, da er keine Vererbung zulässt.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  this.literal =
                  Ach, die Variante kannte ich noch garnicht. Wieder was gelernt.

                  Peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    Zitat von Kropff Beitrag anzeigen
                    PHP-Code:
                    function myLittleObject()
                    {
                      var 
                    literal =
                      {
                        
                    eigenschaft 'blubb',
                        
                    methode     : function()
                        {
                          
                    alert (this.eigenschaft);
                        }    
                      }
                      return 
                    literal;
                    }
                    var 
                    obj = new myLittleObject();
                    obj.methode(); 
                    Pfui, pfui und nochmals pfui :-)

                    Der Aufruf eines Konstruktors mit new davor liefert automatisch immer eine Objektinstanz zurück - ohne, dass irgendwo "return" drin steht.

                    Im Konstruktur return zu nutzen, pervertiert den Sinn des Konstruktors - dein Code liefert jetzt gar kein Objekt vom Typ myLittleObject (unglücklich gewählter Name Konstruktor im Beispiel, deshalb habe ich das angepasst) mehr zurück, sondern nur das literal.

                    Klar kann man ein solches auch per Funktion erzeugen, wenn man möchte, und dann auch mit return arbeiten - aber eine solche Funktion sollte man in so einem Falle dann auch direkt aufrufen, da ist das new beim Aufruf dann unangebracht.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Zitat von wahsaga Beitrag anzeigen
                      Im Konstruktur return zu nutzen, pervertiert den Sinn des Konstruktors - dein Code liefert jetzt gar kein Objekt vom Typ myLittleObject (unglücklich gewählter Name Konstruktor im Beispiel, deshalb habe ich das angepasst) mehr zurück, sondern nur das literal.
                      Ja, Asche auf mein Haupt. Habe gestern Abend zum ersten Mal mit Literalen in Konstruktorfunktionen herumgespielt. Ist noch ein wenig Neuland für mich.
                      Zitat von wahsaga Beitrag anzeigen
                      Klar kann man ein solches auch per Funktion erzeugen, wenn man möchte, und dann auch mit return arbeiten - aber eine solche Funktion sollte man in so einem Falle dann auch direkt aufrufen, da ist das new beim Aufruf dann unangebracht.
                      Ich habe ja nicht gesagt, dass das gut ist.
                      Zitat von wahsaga Beitrag anzeigen
                      unglücklich gewählter Name Konstruktor
                      Naja, die Dinger heißen halt Konstruktorfunktion.

                      Peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        Zitat von Kropff Beitrag anzeigen
                        Ich habe ja nicht gesagt, dass das gut ist.
                        Und ich wollte nur noch mal klar stellen, warum nicht.
                        Naja, die Dinger heißen halt Konstruktorfunktion.
                        Ja, umgangssprachlich schon.

                        Du darfst dich hier aber nicht von deinem Wissen über OOP, wie du es in anderen Sprachen wie bspw. PHP hast, fehl leiten lassen.

                        JavaScript kennt bekanntlich keine Klassen, sondern setzt OO anders um.
                        Dadurch, dass functions auch objects sind, „ist“ die Funktion schon ihr eigener Konstruktor, ohne dass man eine Konstruktur-Methode noch mal extra deklariert.

                        Wenn man also eigene Objekte in JavaScript mittels new Something erzeugen will, dann in der Funktion Something nicht mit return arbeiten - sonst erhält man etwas komplett anderes, als man eigentlich beabsichtigt hat.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Zitat von Kropff Beitrag anzeigen
                          Naja, die Dinger heißen halt Konstruktorfunktion.
                          Normalerweise schon, aber da deins gar kein Konstruktor war (auch wenn du ihn so aufrufst), hätte sich der Name LiteralGenerator eher angeboten.
                          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                          Super, danke!
                          [/COLOR]

                          Kommentar


                          • #14
                            Zitat von wahsaga Beitrag anzeigen
                            Ja, umgangssprachlich schon.
                            Ich halte die Bezeichnung auch für äußerst unglücklich.
                            Zitat von wahsaga Beitrag anzeigen
                            JavaScript kennt bekanntlich keine Klassen, sondern setzt OO anders um. Dadurch, dass functions auch objects sind, „ist“ die Funktion schon ihr eigener Konstruktor, ohne dass man eine Konstruktur-Methode noch mal extra deklariert.
                            ich weiß.
                            Zitat von wahsaga Beitrag anzeigen
                            Wenn man also eigene Objekte in JavaScript mittels new Something erzeugen will, dann in der Funktion Something nicht mit return arbeiten - sonst erhält man etwas komplett anderes, als man eigentlich beabsichtigt hat.
                            Ich bin gestern Abend bei SelfHTML auf das Beispiel gestoßen und habe mich auch erst gewundert. Aber da man bei JavaScript immer wieder mit Überraschungen rechnen muss (ich zumindest), dachte ich, das ist ein gangbarer Weg. Tja, so kann man sich irren.

                            Peter

                            PS. Ich glaube so richtig werde ich diese Sprache nie verstehen. Kann zwar die dollsten Sachen programmieren, aber so richtig überzeugt bin ich von Ergebnis nur in wenigen Fällen.
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Kommentar


                            • #15
                              Danke, das ist genau, was ich gesucht habe.

                              Euern Kurt

                              Kommentar

                              Lädt...
                              X