molily: Sprachregelung

Beitrag lesen

Hallo,

Bitte macht euch erst einmal selbst schlau über das Objektsystem in JavaScript,

Klar, gerne

Scheint noch nicht passiert zu sein, du erwartest offenbar, dass ich es dir persönlich von Null an erkläre.

In JavaScript gibt es keine Klassen, sondern Konstruktoren und Prototypen.

Und was sind Prototypen? Die hängen sicherlich vollkommen in der Luft?

Wie gesagt, Prototypen sind Objekte. Wie die zustande kommen und wo die referenziert sind, ist völlig beliebig.

Die Prototypen der Kernobjekte sind erreichbar über [globales Objekt].Konstruktor.prototype. Im Browserkontext ist window das globale Objekt.

Siehe auch http://es5.github.io/#x15.

Konstruktoren sind simple Funktionen, die mit dem new-Operator aufgerufen werden, und Prototypen sind beliebige Objekte.

Schön. Wie nennt man das sonst üblicherrweise, wenn es sich nicht um JavaScript handelt?

Das soll wohl eine rhetorische Frage sein. Man sollte in JavaScript nicht mit dem Terminus »Klasse« hantieren, solange nicht klar ist, was gemeint ist (vgl. Pseudoklassen und ECMAScript-6-Klassendeklarationen). Diese Terminologie führt eher zu Verwirrung und Missverständnis.

Andere Sprachen haben feste, zur Laufzeit oftmals unveränderliche Typen, denen Exemplare/Instanzen gegenüber stehen. Nicht so in JavaScript. Da gibt es keine statischen Typdeklarationen, sondern Funktionen, die Objekte erzeugen, sowie prototypische Delegation zwischen Objekten. Man kann das volle OOP-Programm in JavaScript funktional und mit Prototypen durchziehen.

Wessen Objekt sind denn die "Objekte" in JS, wenn nicht einer Klasse?

Ich verstehe nicht, worauf du hinauswillst.

Objekte haben einen Konstruktor, der ist meist über die »constructor«-Eigenschaft zugänglich, und einen Prototyp-Verweis, der ist in der internen [[Prototype]]-Eigenschaft gespeichert und kann auch von außen in Erfahrung gebracht werden.

Einfache Objekte (z.B. ein Objekt-Literal {}) sind Instanzen des Konstruktors »Object« und haben den Prototyp »Object.prototype«, das ist der oberste Prototyp in den meisten Prototyp-Ketten.

Wenn ein Konstruktor ein Objekt erzeugt, spricht man zwar von einer »Instanz«, aber abgesehen von den (übrigens veränderlichen) constructor- und [[Prototype]]-Verweisen gibt es keine »magische« Typ-Exemplar-Verbindung.

(Primitives wie Number-Werte einmal ausgenommen, die haben eine inhärente Typzugehörigkeit.)

Dann wäre es doch vielleicht besser zu sagen, JavaScript ist eine Klasse, aber die lässt keine weiteren Ableitungen zu?

Häh? Natürlich erlaubt JavaScript Ableitungen. Bitte, lies dich ein bisschen ein.

Weiterer Lesestoff:

Mathias

0 64

Variable übergeben von einer Funktion in eine andere Funktion

chris1234
  • javascript
  1. 0
    tami
    1. 0
      Martin R.
      1. 0
        tami
        1. 0
          Martin R.
          1. 0
            molily
            1. 0
              Martin R.
  2. 0

    Funktionsparameter

    molily
  3. 0
    Tom
    1. 0
      chris1234
  4. 0
    hotti
    1. 0

      Sprachregelung

      Tom
      1. 0
        tami
        1. 0
          tinita
          1. 0
            tami
            1. 0
              tami
              1. 0
                unknown
                1. 0
                  tami
                  1. 0
                    unknown
                    1. 0
                      tami
                      1. 0
                        unknown
                        1. 0
                          tami
                          1. 0
                            unknown
                            1. 0
                              tami
                              1. 0
                                unknown
                                1. 0
                                  tami
                          2. 0
                            molily
                            1. 0
                              tami
                              1. 0
                                molily
                                1. 0
                                  tami
                                  1. 1
                                    1UnitedPower
                                    1. 0

                                      Sprachregelung - "new" in JS

                                      tami
                                      1. 0
                                        tami
                                        1. 2

                                          Von ewigen Zitaten und lieblos eingeworfenen Links

                                          1UnitedPower
                                          • zu diesem forum
                                          1. 0
                                            1UnitedPower
                                            1. 0
                                              Tom
                                              1. 0
                                                1UnitedPower
                                              2. 0

                                                verlieren und vergessen wie in echt

                                                Auge
                                              3. 0
                                                Matthias Apsel
                                              4. 0
                                                Christian Kruse
                                                1. 0
                                                  Tom
                                                  1. 0
                                                    Christian Kruse
                                                  2. 0
                                                    tami
                                            2. 0
                                              tami
                                            3. 0
                                              tami
                                          2. 0
                                            tami
                                      2. 0
                                        1UnitedPower
                                        1. 0
                                          tami
                                  2. 0
                                    molily
                                    1. 0
                                      tami
                                    2. 0
                                      tami
                                    3. 0
                                      tami
                                      1. 0
                                        tami
                                        1. 0
                                          molily
                                          1. 0
                                            tami
                                            1. 0
                                              molily
                                        2. 0

                                          Sprachregelung - Fehler im Beispielcode

                                          tami
      2. 0
        molily
        1. 0
          Tom
          1. 0
            molily
        2. 0
          tami
          1. 0
            molily
          2. 1
            molily
            1. 0
              tami