Gunnar Bittersmann: Schreibweise?

Welche Schreibweise würdet Ihr vorziehen und warum? (Oder wann welche?)

var Foo = {};  
  
Foo.bar = function () {return "bar";};  
  
Foo.baz = function () {return "baz";};

oder

var Foo =  
{  
  bar: function () {return "bar";},  
  
  baz: function () {return "baz";}  
};

Live long and prosper,
Gunnar

--
„Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)
  1. Hallo,

    Welche Schreibweise würdet Ihr vorziehen und warum? (Oder wann welche?)

    var Foo = {};

    Foo.bar = function () {return "bar";};
    Foo.baz = function () {return "baz";};

    
    >   
    > oder  
    >   
    > ~~~javascript
    
    var Foo =  
    
    > {  
    >   bar: function () {return "bar";},  
    >   baz: function () {return "baz";}  
    > };
    
    

    So generell kann ich das nicht sagen. Eigentlich ist mir die zweite Variante lieber, mit kleiner Abwandlung:

    var Foo = {

    bar: function () {return "bar";},
      baz: function () {return "baz";}
    };

      
    Das hat den Vorteil, dass man gleich sieht, was zusammengehört.  
      
    Allerdings bei umfangreicheren Objekten und tieferen Verschachtelungen hat das den Nachteil, dass man mehr Einrückungen braucht, was die Übersicht wieder erschwert.  
      
    Gruß, Don P  
    
    
  2. Hellihello Gunnar,

    var Foo =

    {
      bar: function () {return "bar";},

    baz: function () {return "baz";}
    };

      
    Allman-Style was die geschweiften Klammern angeht, oder? Vorteil: sieht bei Code-Folding "gut" aus. Immerhin kann man bei PHP mehrer Klassen mit Codefolding ganz gut in einem Dokument übersichtlich verarbeiten und hat die Klassenüberschrift immer noch sichtbar. Zumindest macht der Scite das so.  
      
    Dank und Gruß,  
      
    frankx
    
    1. echo $begrüßung;

      Könntest du bitte mal dein fehlerhaftes (vermutlich) User-JS korrigieren? Du hängst seit kurzem in jeder deiner Antworten " - XHTML-Ansicht" an den Betreff.

      echo "$verabschiedung $name";

      1. Hellihello dedlfix,

        echo $begrüßung;

        Könntest du bitte mal dein fehlerhaftes (vermutlich) User-JS korrigieren? Du hängst seit kurzem in jeder deiner Antworten " - XHTML-Ansicht" an den Betreff.

        gerne, aber ich mach das da nicht dran, das hängt bei ganz vielen neuerdings hinten dran.

        Dank und Gruß,

        frankx

        1. Moin!

          Könntest du bitte mal dein fehlerhaftes (vermutlich) User-JS korrigieren? Du hängst seit kurzem in jeder deiner Antworten " - XHTML-Ansicht" an den Betreff.

          gerne, aber ich mach das da nicht dran, das hängt bei ganz vielen neuerdings hinten dran.

          Ich habe zur Zeit einen großen Rückstand, was das Lesen der Threads im Forum betrifft, daher sind ca. 60% aller Threads noch aufgeklappt. Allerdings sehe ich dieses Anhängsel nur bei dir bzw. bei Postings, die auf deine folgen. das problem dürfte also doch bei dir liegen.

          Cü,

          Kai

          --
          What is the difference between Scientology and Microsoft? One is an
          evil cult bent on world domination and the other was begun by L. Ron
          Hubbard.
          ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
          1. Hellihello

            Ich habe zur Zeit einen großen Rückstand, was das Lesen der Threads im Forum betrifft, daher sind ca. 60% aller Threads noch aufgeklappt. Allerdings sehe ich dieses Anhängsel nur bei dir bzw. bei Postings, die auf deine folgen. das problem dürfte also doch bei dir liegen.

            jap https://forum.selfhtml.org/?t=164832&m=1074729

            erst mit xhtml kommt die id vor und damit im skript zum tragn.

            Dank und Gruß,

            frankx

      2. Hellihello

        Könntest du bitte mal dein fehlerhaftes (vermutlich) User-JS korrigieren?

        Hattest Recht. Ich habe eine übernommen, blind, von mathbr (Mathias Bordala?). Die kam wohl jetzt erst zum Zuge, als ich umgestellt hatte auf XHTML. Hab sie mal weggenommen erstmal.

        Dank und Gruß,

        frankx

  3. Hallo,

    Ich finde die ausführlichere Schreibweise für längere Sachen geeigneter. Der Logik nach kommt nach dem öffnenden »{« beim Object-Literal eine Einrückungsebene, sodass der gesamte Code im Literal schonmal um eine Ebene eingerückt wird. Je nachdem, wie kompliziert die Funktionen sind, hängt der letztliche Code durch sowas extrem weit rechts. Mit der langen Schreibweise hängt der Code in den Funktionen dann eine Stufe weiter links.

    Die Wiederaufnahme des Schemas Bla.bezeichner = function () { ... }; ist auch ohne den Kontext des möglicherweise riesigen Object-Literals verständlich. Wenn ich also an einer beliebigen Stelle in den Quellcode schaue, brauche ich nicht viele Seiten nach oben scrollen, um dort irgendwo ein unauffälliges »var bla = {« zu finden. (Das stört mich bei Prototype, jQuery und Co. sehr.)

    Nicht zuletzt kann man die Zuweisungen von Bla.a und Bla.b trennen. Bla = { /* und hier alles drin */ } ist immer die Erstdefinition, die vorige Member überschreibt. Mit dem Schema Bla.member = ... kann man immer anhängen, anstatt monolithisch zu definieren. Davor kann man dann ggf. if (!window.Bla) Bla = {}; hängen, wenn man sowas wie optionale Module realisieren will.

    Letztlich läuft es m.E. aber auf eine Mischung von beiden Formen hinaus. Das kann man schwer so allgemein diskutieren, denke ich. Ich verwende für kurze zusammenhängende Scripte gerne das Object-Literal. Wenns dann komplizierter wird, stören sie mich allerdings und beißen sich mit Namespacing und Modularisierung, wie ich sie gerne hätte.

    Mathias