Wenn Sie 'this' als Argument übergeben [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Wie funktioniert das Schlüsselwort "this"? 23 answers

Ich versuche, über @ zu lernthis, und es verwirrt mich ein bisschen hier:

var randomFunction = function(callback) {
    var data = 10;
    callback(data);
};

var obj = {
    initialData:  20,
    sumData: function(data) {
        var sum = this.initialData + data;
        console.log(sum);
    },
    prepareRandomFunction: function() {
        randomFunction(this.sumData.bind(this));
    }
};

obj.prepareRandomFunction();

Istthis wurde entwickelt, um selbst festzulegen, wo es zuerst im Code gerendert wird. In meinem Beispiel verwende ich es beispielsweise erfolgreich, um auf @ zu verweiseobj und binde auch die Funktion anobj, aber seitthis wird als Rückruffunktion übergeben, was verhindert, dass es als @ gesetzt wirandomFunction (d. h. was hindert es daran, "this.sumData.bind (this)" wörtlich zu übergeben, so dassthis ist eingestellt aufrandomFunction wann wird es von dort aufgerufen)?

Ich bin ein Noob, der versucht zu lernen. Vielen Dank

Aktualisier Ich frage nicht genau, wie das generell funktioniert (glaube ich nicht). Ich bin hauptsächlich gespannt, warumthis wird dort gesetzt, wo ich es als Argument meines @ definierandomFunction call, und nicht wocallback wird innerhalb von @ aufgerufrandomFunction. Ich könnte mich irren, aber wenn ich @ tauschen würthis.sumData.bind(this) mit demcallback(data) das ich momentan habe ich denke ich würde ein anderes ergebnis bekommen. Liegt das ancallback ist ein Verweis aufthis.sumData.bind(this) wann es zum ersten Mal definiert wurde (und wothis istobj)?

Ich denke, ich habe durch dieses Szenario gelernt, dassthis wird gesetzt, wenn es ausgeführt wird. Es wird nicht als Argument übergeben, das später festgelegt wird, wenn das Argument in der Zeile aufgerufen wird.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage