felixcat: vererbung / delegationsprinzipien

Beitrag lesen

bitte entschuldige die lange wartezeit - ich bin gerade vielbeschaeftigt.

Waaaas? Nein, wenn dann muss ich mich entschuldigen, dass ich dich mit meinen Anfänger-Fragen von der Arbeit abhalte! :)

Ja, für mich steht ein Konstruktor als synonym für eine klasse.

trenn Dich im kontext von JavaScript von dieser *denke*.

Wie könnte ich sonst Konkrete Objekte (per "new") erzeugen ohne
eine art "Klasse". :)

auch in klassenbasierte oo benoetigst Du dazu nur den konstruktor

Nach ein bisschen vertiefung und nach 4 Videos von Douglas Crockford, beginnt sich bei mir eine Art Gefühl für JavaScript zu entwickeln :)

...Das kam weil ich die Bedeutung des Call-Operators mit der call()-
methode verwechselt hatte, welche ja ein neues objekt "konstruiert",
wobei der operator nur "aufruft" ...

noe ... call-operator »()« und die call methoden »apply« und »call«
haben grundsaetzlich erstmal die gleiche aufgabe, naemlich ein
funktionsobjekt auszufuehren. ueber die beiden call-methoden lassen
sich ausserdem noch auf unterschiedlich flexible weise argumente an
eine funktion verbacken. darueber hinaus, und das ist der bei weitem
wichtigste aspekt, laesst sich der kontext, in welchem eine methode
ausgefuehrt werden soll, manipulieren.

Ja, das ist mir jetzt bewußt...

ja. statt des emulierten »super()« liesse sich eine [[SuperCat]]-
instanz zum prototypen eines [[SubCat]]-konstruktors bestimmen:

var SuperCat = (function () {

this.sound = "miaow";
});

var SubCat = (function () {

alert("this.constructor : " + this.constructor); // [[SuperCat]]

this.constructor = arguments.callee; // [prototype]-referenz ueberschreiben

alert("this.constructor : " + this.constructor); // [[SubCat]]

this.sound ="meow";

this.makeSound = (function () {

alert("the cat says "" + this.sound + """);
  });
  this.makeProtoSound = (function () { // makeSuperSound

alert("the cat says "" + this.constructor.prototype.sound + """);
  });
});
SubCat.prototype = new SuperCat();

var felixcat = new SubCat();

felixcat.makeSound(); // "meow"
felixcat.makeProtoSound(); // "miaow"


>   
  
Das Beispiel gefällt mir am Besten! So ähnlich hatte ich das auch vermutet :) Ich hatte allerdings im Web gesehen, dass man arguments.callee nur für namenlose Funktionen benutzt und es seit 1.4 als depreciated gilt. Da constructor doch ein member des SubCat Konstruktors an sich ist, kann ich doch schreiben "this.constructor = SubCat; // [prototype]-referenz", oder? Damit resette ich ihn wieder auf SubCat.  
  

> > Danke für deine Mühe Peter!  
>   
> nicht dafuer.  
>   
  
Wofür sonst? :) Nochmals danke :)  
  
so long - felix
0 45

Interne public static member nicht aufrufbar

felix12
  • javascript
  1. 0
    Cheatah
    1. 0
      felix12
      1. 0
        Cheatah
        1. 0
          felix12
          1. 0
            MudGuard
            1. 0
              felix12
              1. 0
                Struppi
                1. 0
                  Patrick Andrieu
                  1. 1
                    peterS.
                    1. 0
                      Patrick Andrieu
                    2. 0
                      felix12
                2. 1

                  *private static* durch umschliessende anonyme *function stacks*

                  peterS.
                  1. 0
                    felix12
                    1. 0
                      Struppi
                      1. 0
                        felix12
                        1. 2

                          klassenlose vollwertige und flexible oo auf funktionaler basis

                          peterS.
                          1. 0
                            felix12
                            1. 0
                              felix 12
                            2. 0
                              Struppi
                              1. 0
                                felix12
                            3. 1

                              vererbung / delegationsprinzipien

                              peterS.
                              1. 0
                                felixcat
                                1. 1

                                  »[Function].arguments.callee« versus »arguments.callee«

                                  peterS.
                                  1. 0
                                    felix12
      2. 0
        Kai345
        1. 0
          felix12
          1. 0
            ChrisB
            1. 0
              felix12
              1. 0
                Struppi
                1. 0
                  felix12
                  1. 0
                    Struppi
                    1. 0
                      felix12
                      1. 0
                        Struppi
                      2. 1

                        einfache objekte/namensraeume und singleton-konstrukte

                        peterS.
                        1. 0
                          Struppi
              2. 2
                Timo "God's Boss" Reitz
                1. 0
                  felix12
                  1. 0
                    Kai345
                    1. 0
                      felix12
                      1. 0
                        Kai345
                        1. 0
                          Kai345
                          1. 0
                            felix12
                            1. 0
                              Kai345
  2. 4
    molily