echte vererbung in javascript?


  • Mod

    Hallo Leute.

    Ist es möglich in JS echte Vererbung hinzubekommen?

    also ich meine so simple sachen wie: virtuelle Methoden

    Ich habe ein paar ansätze im netz gefunden, aber das problem ist entweder ist es nicht möglich beliebig tiefe hierachien zu erschaffen oder ich kann keine methode von base aufrufen wenn ich sie im kind überschrieben habe...

    gibt es da irgendwelche tricks?



  • Guten Morgen,

    Vererbung funzt in Javascript, ob mit virtuellen Funktionen oder nicht, weiß ich nicht.
    Du kannst dir vielleicht mal die Prototype Javascript Library anschauen, die ist ziemlich "cutting-edge" was die Ausnutzung von JS angeht.

    Meine Frage ist nun: Warum möchtest du Vererbung und Klassen in Javascript verwenden? Hast du nur einen Zielbrowser (!= IE)? Oder zuviel Freizeit? JS ist ne Qual wenn du mehr als einen Browser unterstützen möchtest..


  • Mod

    Headhunter schrieb:

    Vererbung funzt in Javascript, ob mit virtuellen Funktionen oder nicht, weiß ich nicht.
    Du kannst dir vielleicht mal die Prototype Javascript Library anschauen, die ist ziemlich "cutting-edge" was die Ausnutzung von JS angeht.

    ich kenne prototype, ja.

    aber die vererbung dort hat das problem dass du vom child keine base methode aufrufen kannst die du neu definiert hast.

    damits klarer wird:

    class Base { public: virtual void foo() {} };
    class Derived : public Base { public: void foo() { Base::foo(); }};
    

    das ist mit der prototype methode leider nicht möglich... weil einfach der komplette inhalt von Base nach Derived kopiert wird und wenn ich nun foo() neu definiere, überschreibe ich Base::foo und habe keinen zugriff mehr darauf.

    ich kann dann zwar noch per
    base.foo.call(this)
    es aufrufen - aber das ist ja keine besonders gute lösung...

    Meine Frage ist nun: Warum möchtest du Vererbung und Klassen in Javascript verwenden? Hast du nur einen Zielbrowser (!= IE)? Oder zuviel Freizeit? JS ist ne Qual wenn du mehr als einen Browser unterstützen möchtest..

    Es ist teil einer library.

    Beispiel:
    ich habe eine ajax klasse für den rohen zugriff auf webservices. davon leite ich eben eine klasse für den speziellen zugriff auf meine eigenen webservices ab und dann eine andere klasse für zugriff auf xml-rpc webservices, etc.



  • Hallo,

    ne Antwort habe ich immer noch nicht, aber beim Lesen von JoelOnSoftware ist mir eben ne Idee gekommen:
    Kannst du Vererbung nicht durch Highlevel-Functions ersetzen?

    Auf der Idee muss man sicherlich noch was rumdenken, aber ich vermute so kann man Vererbung recht easy obsolet machen..


  • Mod

    Headhunter schrieb:

    ne Antwort habe ich immer noch nicht, aber beim Lesen von JoelOnSoftware ist mir eben ne Idee gekommen:
    Kannst du Vererbung nicht durch Highlevel-Functions ersetzen?

    Auf der Idee muss man sicherlich noch was rumdenken, aber ich vermute so kann man Vererbung recht easy obsolet machen..

    kannst du mir nen direkten link zu einem artikel darueber geben?

    ich sehe auf der startseite nur wie sich jemand wahnsinnig ueber lambda freut...



  • Hi,

    Stichwort ist halt Funktionalte Programmierung, besonders die High Level Functions als Alternative zu Klassen oder Obejkten würde ich mir anschauen.
    Ob du bei Google oder Wikipedia anfängst zu suchen, ist mir eigentlich egal, die Links kennst du 😉 ?


Anmelden zum Antworten