molily: Problem bei Wertzuweisung auf Objekt

Beitrag lesen

Wenn ich im "Konstruktor" (#initialize) einfach immer alle Funktionen an this "binde", sollten mir ja eigentlich keine Nachteile entstehen - oder sehe ich das falsch?

Jein. Es schadet natürlich nicht, bind() vorsorglich auf alle Methoden anzuwenden, selbst wenn sie ohnehin immer über this.methode() aufgerufen werden. Allerdings kapselt es halt die tatsächliche Methoden in einer Closure. Das braucht halt zusätzliche Zeit und Speicher. Beim Aufrufen der Methode wird die Closure und die tatsächliche Methode aufgerufen, d.h. die Anzahl der Funktionsaufrufe verdoppelt sich. Das kann zu Performance-Problemen führen, siehe Performance von JavaScript-Closures (am Ende diskutiere ich auch Binding).

Ob dieser Overhead ins Gewicht fällt, hängt vom Einzelfall ab. Function.prototype.bind ist wie gesagt seit ECMAScript 5 Teil des JavaScript-Kerns und damit sind die nativen Browser-Implementierungen auch weitaus schneller geworden.

Mathias