Da du hier von nodes sprichst, vermute ich mal du arbeitest mit dem DOM. Daneben kommen Schleifen bzw. Arrays zum Einsatz, also u.U. viele Nodes.
Im firefox läuft die Variante mit bind 8x langsamer als ohne, d.h. du bist insgesamt betrachtet schnell im Zehntelsekundenbereich.
Das Endprodukt wird ausschließlich in einer Webkit-Engine mit der V8 JavaScript Engine laufen.
Ich kann mir kaum vorstellen, dass das viel Zeit sein wird, die ich da einbüße - und selbst wenn, dann wartet der User halt mal eine halbe Sekunde länger. Und da die Daten, die im Baum dargestellt werden, sowieso dynamisch von einem Server geholt werden, spielt hier die Anfrage die größte Zeit.
Und ncoh mal, weil das offensichtlich nicht klar ist, mir geht es nicht um bind() an sich, sondern um dieses Konstrukt:
initialize: function(parent, no) {
this.addNode = this.addNode.bind(this);
this.printout = this.printout.bind(this);
> Das einzige was hier passiert, ist das die Funktion um den Faktor 8 gebremst wird ohne irgendeinen Nutzen davon zu haben.
Das habe ich gemacht, um mir an anderen Stellen im Code das ständige \*.bind(this) zu ersparen. Aber ich seh es ja ein, dass das evtl. die Perfomance beeinflussen könnte.
Allerdings wird bei jedem Aufruf von \*.bind(this) ja auch eine neue Funktion erstellt und die wird zurückgegeben. Wenn ich gleich im Konstruktor alle Funktionen an this "binde", müssen weniger oft neue Funktionen erstellt werden. Vielleicht ist auch das ein Geschwindigkeitsvorteil?!
Wobei es mir auch auf ein paar Millisekunden nicht ankommt.