[Diese zu Bound function instead of closure to inject extra arguments verwandt ist, aber das war weder klar gefragt noch beantwortet.]Bindung eine Instanz Methode vs Verpackung in einer anonymen Funktion
ich eine Funktion aufrufen, die eine Funktion als Argument erwartet. Ich möchte eine Methode aus meiner Klasse übergeben, die an eine Instanz meiner Klasse gebunden ist. Um es klar, übernimmt meine Klasse wie folgt aussieht:
var MyClass = function() {}
MyClass.prototype.myMethod = function() { ... }
var my_instance = new MyClass();
Gibt es einen substanziellen Unterschied zwischen bind
mit:
doSomething(my_instance.myMethod.bind(my_instance))
und dem Einwickeln des Anrufs in einer anonymen Funktion:
doSomething(function() { my_instance.myMethod(); })
?
Der effektive Unterschied ist *, wenn * 'my_instance' (und' my_instance.myMethod') aufgelöst wird. Angenommen, dass sich keine der Bindungen ändert, haben beide "this" von "my_instance", wenn die Methode aufgerufen wird. Es wird geringfügige Unterschiede zu den Call-Frames geben, aber * shrug *. – user2864740
Ich bin nicht wirklich sicher, was "besser" hier bedeutet, da 'bind' betrachtet wird. – user2864740
@ user2864740 Ich entfernte die Frage "Gibt es etwas besseres", da sie die primäre Absicht dieses Beitrags matschig macht. –