ich JS bin neu und habe ein Problem, herauszufinden, warum binden mir Probleme macht:Javascript Probleme mit bind
Hier ist ein Ausschnitt:
var MyTest = function() {
registerChannel(address, null, this._messageHandler.bind(this));
};
MyTest.prototype._messageHandler = function(msg) {
this._logToConsole(msg);
};
MyTest.prototype._close = function() {
(function(inst) {
asyncSend(address, data,
function(err, reply) {
unregisterChannel(address, inst._messageHandler.bind(inst));
}
);
})(this);
}
Die registerChannel
Methode speichert die Callback-Funktion I übergeben und die unregisterChannel
versucht zu überprüfen, ob dieser Rückruf existiert und fehlschlägt, weil 'binden' die Methode kopiert und nicht als Referenz (nach meinem besten Wissen) übergeben.
Das Ergebnis ist, dass fehlschlägt, weil es die Funktion, die ich passierte nicht finden kann.
Wie kann ich das lösen? anwenden \ Anruf? nicht mit denen vertraut ...
Danke und ich hoffe, dass meine Frage Sinn hat ...
Könnte ‚anwenden‘ oder "nennt auch in diesem Fall helfen? – Shvalb
@Shvalb nein, sie gelten nicht (kein Wortspiel beabsichtigt) - sie rufen tatsächlich Funktionen auf, anstatt passable Referenzen zu erstellen. – Alnitak
Danke! Sie haben mir sehr geholfen! – Shvalb