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.
Du ersparst dir nichts dadurch, im gegenteil du machst dir damit evtl. sogar Probleme. Hier in dem Fall ist es nicht weiter tragisch, aber wenn du einen Fehler machst, dann kann es passieren, dass die Methode nicht mehr in dem Kontext aufgerufen wird, in dem sie aufgerufen werden soll.
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?!
Nein. Die Funktionen werden sowieso automatisch an this gebunden, dass macht in dem Fall Class.create für dich, du legst einfach nur noch eine Funktionsschicht drumherum.
In etwa so:
function F() {
this.funktion = function () {};
this.funktion = ( function(kontext, f) {
return function () {
f.call(kontext);
};
)(this, this.funktion);
}
Das ist eine aufwändige Prozedure für nichts.
Wobei es mir auch auf ein paar Millisekunden nicht ankommt.
Ja gut, es gibt auch Leute die fahren mit angezogener Handbremse. Es macht aber keinen Sinn.
Struppi.