Ergebnis 1 bis 4 von 4
  1. #1
    Avatar von Deever
    Deever ist offline Foren As
    registriert
    04-10-2005
    Beiträge
    75

    Methoden Funktionsobjekten hinzufügen oder deren Prototypen?

    Hey Amigos, wie geht's?

    So der Titel sagt eigentlich schon alles. Wie sollte man Klassen und deren Methoden besser implementieren?
    So:
    Code:
    function MyClass(foo, bar) {
    	/* some init code */
    }
    
    MyClass.prototype.fooMethod = function(bar) { /* ... */ }
    MyClass.prototype.barMethod = function(foo) { /* ... */ }
    oder lieber so:
    Code:
    function MyClass(foo, bar) {
    	/* some init code */
    	this.fooMethod = function(bar) { /* ... */ }
    	this.barMethod = functino(foo) { /* ... */ }
    }
    ?

    Es ist mir bekannt, daß bei ersterer Variante die Methoden keinen Zugriff auf klassenprivate Attribute haben, weshalb ich bisher immer zweitere Variante benutzt habe. Allerdings stelle ich fest, daß ich in meinen Klassen Attribute eigentlich nie als privat implementiere, weshalb dieser Unterschied zwischen beiden Varianten hinfällig wird. Welche ist denn nun von diesem Standpunkt aus die bessere Variante?

    Vielen Dank für eure Antworten!
    Gruß,
    /dev

  2. #2
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Methoden Funktionsobjekten hinzufügen oder deren Prototypen?

    Die erste Variante halte ich für besser.
    einmal kann man sehr schön die Funktionsdeklarationen kapseln und zusammenfassen:
    PHP-Code:
    Obj.prototype = {
    func_1: function() { .....},
    func_2: function() { .....},
    func_3: function() { .....},
    ....
    }; 
    Dann muss nicht jedesmal, wenn du ein Objekt erzeugst, die Funktion neu deklariert werden. Denn jedesmal wenn du mit new() ein Objekt erzeugst, wird ja die Funktion aufgerufen. (Ob das wirklich eine Rolle spielt weiß ich aber nicht).

    OO ohne private Variabeln ist aber auch nicht ganz im Sinne des Erfinders, wobei ich das in JS auch nicht unbedingt immer durchziehe.

  3. #3
    Avatar von Deever
    Deever ist offline Foren As
    registriert
    04-10-2005
    Beiträge
    75

    AW: Methoden Funktionsobjekten hinzufügen oder deren Prototypen?

    Vielen Dank für deine Antwort! Ich denke, ich werde meinen Code zukünftig in ersterem Stil verfassen.
    Zitat Zitat von ein schlauer
    Dann muss nicht jedesmal, wenn du ein Objekt erzeugst, die Funktion neu deklariert werden. Denn jedesmal wenn du mit new() ein Objekt erzeugst, wird ja die Funktion aufgerufen. (Ob das wirklich eine Rolle spielt weiß ich aber nicht).
    Das ist richtig. Beim Instanziieren und bei der Vererbung erhält jedes Objekt einen eigenen Satz an Methoden, der genau das Gleiche tut! Während dies bei der Instanziierung noch nur reine Ressourcenverschwendung ist, kann der Code bei der Vererbung ein unerwartetes Verhalten produzieren, nämlich dann, wenn du in einer Basisklasse eine Methode neu definierst und erwartest, daß diese von den abgeleiteten Klassen mitbenutzt wird.

    Eine Frage: Was genau ist der Unterschied zwischen "foo = new Foo();" und "foo = new Foo;"? Natürlich, bei zweiterem wird die Funktion nicht aufgerufen, aber was passiert sonst genau?

    Vielen Dank!
    Gruß,
    /dev

  4. #4
    Avatar von Deever
    Deever ist offline Foren As
    registriert
    04-10-2005
    Beiträge
    75

    AW: Methoden Funktionsobjekten hinzufügen oder deren Prototypen?

    Noch eine Frage: Wenn ich Methoden über die prototype-Eigenschaft hinzufüge, kommt das natürlich der Vererbung in die Quere, die ich ja ebenfalls über diese Eigenschaft realisiere: "AbgeleiteteKlasse.prototype = new BasisKlasse();". Wie ließe sich beides unter einen Hut bringen?

    Vielen Dank für eure Antworten!
    Gruß,
    /dev

Ähnliche Themen

  1. Drucker hinzufügen Fehler Win XP Home
    Von bine im Forum Tools und Programme
    Antworten: 1
    Letzter Beitrag: 20-04-2006, 07:26
  2. Antworten: 0
    Letzter Beitrag: 12-09-2005, 00:31
  3. Zeichen hinzufügen
    Von dkdenz im Forum JavaScript
    Antworten: 20
    Letzter Beitrag: 25-03-2005, 11:31
  4. neues form. feld hinzufügen
    Von d3nation im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 13-02-2005, 19:03
  5. JumpMenu einträge hinzufügen ??
    Von nano im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 17-06-2004, 23:14

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •