molily: Problem bei Wertzuweisung auf Objekt

Beitrag lesen

Da ist das bind an dieser Stelle unnötig und erzeugt lediglich eine zusätzliche Schicht und ich fragte mich welchen Zweck er damit verfolgt.

Bei der von dir genannten addNode-Methode ist es unnötig (ausgehend von dem geposteten Quelltext).

Bei der printout-Methode ist es jedoch nötig, denn pcworld ruft diese mit delay() auf und erwartet, dass this auf die Instanz zeigt:

this.printout.delay(0.5);
// ...
printout: function() {
   alert("Node#printout: " + this.no + ": " + this.nodearr);
}

Dass pcworld in dem Fall bind einsetzt, ist nötig, wie mein Beispiel zeigen sollte. PrototypeJS bindet hier nicht automatisch an die Instanz.

Du hast natürlich recht, dass es nicht nötig ist, vorsorglich für alle Methoden in Closures zu kapseln. Man sollte in dem Moment binden, wo es nötig wird, also konkret bei der Benutzung von delay, beim Event-Handling und sonstigen funktionalen Operationen:

this.printout.bind(this).delay(0.5);
elem.observe('click', this.printout.bindAsEventListener(this))
usw.

Grüße,
Mathias