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.