Lassen Sie uns Beispiele siehe:Wie funktionieren diese Code-Blöcke in JavaScript?
zuerst:
var user = {
firstName: "John",
sayHi: function() {
alert(this.firstName);
}
};
setTimeout(function() {
user.sayHi(); // John
}, 1000);
Sekunde:
var user = {
firstName: "John",
sayHi: function() {
alert(this.firstName);
}
};
setTimeout(user.sayHi, 1000);// undefined
Warum im zweiten Beispiel undefined? Und wie funktioniert das?
Vielen Dank, aber ich verstehe nicht, wie funktioniert Ihr Beispiel mit anonymer Funktion? Wie spart das den Kontext? –
@JimButton Mit der anonymen Funktion wird es eine Schließung. Ich meine den Objektbenutzer. Aber mit dem ersten Fall wird Internally setTimeout den übergebenen Funktionsverweis wie 'reference.call (scope)' aufrufen, wobei scope das Fenster ist, wenn es nicht überschrieben wurde. also wäre this.firstName ähnlich zu window.firstName. –
Vielen Dank für Ihre Hilfe! –