Ich habe ein Problem gesehen, wahrscheinlich sieht es so aus.
Die Codekopie lautet wie folgt:
name = 'aus dir' raus '
foo = function () {
this.name = 'xxoo';
}
foo.prototype.say = function () {
console.log (this.name);
}
f = neu foo ();
f.say (); // Dieser Satz gibt xxoo aus
setTimeout (f.say, 500); // Dieser Satz wird aus Ihnen ausgegeben
Dies ist eine Fallstrick. Dieses JavaScript wird generiert, wenn er aufgerufen wird, und bezieht sich auf den Kontext. So kann man es lösen. Ich habe es getestet und Anruf verwendet.
Die Codekopie lautet wie folgt:
setTimeout.call (foo (), f.say, 500)
Einige Lösungen online
Dieses Zeigenproblem mit SetTimeout in JS
Verwenden von Timer in JavaScript
Am Ende ist es tatsächlich eine Frage, dies zu verstehen.
Eines Tages verstehe ich es und schreibe weiter