javascript verständnisfrage

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

  • javascript verständnisfrage

    kann mir mal bitte einer erklären, wo hier der unterschied bei der erzeugung eines arrays liegt
    PHP-Code:
    mein_array = Array ();
    mein_array = new Array (); 
    das eine ist ein objekt, das andere ein neues objekt? und wo liegt der praktische unterschied?

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

  • #2
    Vll. hilft es ein wenig weiter http://www.hunlock.com/blogs/Masteri...ascript_Arrays
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      danke für den hinweis, werde ich mir mal zu gemüte führen.

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

      Kommentar


      • #4
        war zwar ein guter artikel. leider wurde auch dort meine frage nicht beantwortet. habe mir selber schon einen wolf gesucht, aber offenbar kennt keiner den unterschied (falls es überhaupt einen gibt)

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

        Kommentar


        • #5
          das eine ist ein objekt, das andere ein neues objekt? und wo liegt der praktische unterschied?
          Auch ohne "new" bekommst du ein neues Objekt zurück und nicht etwa immer das selbe. Folgender Schnipsel beweist das:
          Code:
          a = Array();
          b = Array();
          a[0] = 'foo';
          document.writeln(b[0]);
          Soweit klar. Nun zum Unterschied:

          a = new Array(); erzeugt ein neues Array-Objekt und speichert es in a.

          a = Array(); ruft die Funktion Array() auf und speichert den zurückgegebenen Wert in a.

          Das hört sich an, als gäbe es zwischen beiden Anweisungen einen Unterschied - Objekt erzeugen vs. Funktion aufrufen.

          Dem ist aber nicht so!
          Denn in JS werden Objekttypen über Funktionen definiert.

          Array ist zwar ein built-in type, aber wenn es das nicht wäre, würde seine Definition so aussehen:

          Code:
          function Array(...) {
              this.length = arguments.length;
              this.pop = function (...) { ... };
              this.push = function (...) { ... };
              ...
              return this; 
          }
          Nun sollte klar sein, was bei "a = Array();" passiert.
          Das Schlüsselwort new in der Anweisung "a = new Array();" ändert nichts daran. Beide Varianten sind funktional identisch.

          Es gilt als guter Stil, das "new" bei der Erzeugung von Objekten nicht wegzulassen. So kann man leicht erkennen, wo wirklich ein Objekt erzeugt wird und wo lediglich eine Funktion aufgerufen wird, die bspw. zwei Zahlen addiert und das Ergebnis zurückgibt.
          EDIT:
          Referenz: 15.4.1 in http://www.ecma-international.org/pu...T/Ecma-262.pdf
          Zuletzt geändert von onemorenerd; 11.11.2007, 19:52.

          Kommentar


          • #6
            gute erklärung, jetzt hab ichs begriffen

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

            Kommentar

            Lädt...
            X