Ich versuche, ein JS-Objekt zu schreiben. An etwas hängenbleiben, ich verstehe nicht, wie Kontexte funktionieren. Hier ist ein einfaches Beispiel:Javascript Objekt Schließung Kontext
var MyApp = function(el) {
this.el = el;
};
MyApp.prototype.bind = function() {
window.setTimeout(this.start, 300);
}
MyApp.prototype.test = function(msg) {
console.log(msg);
}
MyApp.prototype.start = function() {
console.log(this); // Returns the window context
this.test('Hello'); // Doesn't work, of course.
}
var myapp = new MyApp(el);
myapp.bind();
Problem ist, wenn die Start-Methode aufrufen, ich im Fenster Kontext bin wegen der window.setTimeout. Gibt es eine Möglichkeit, dies zu beheben, oder handelt es sich um ein Musterdesignproblem?
Dank;)
Eine der Lösungen zu dieser Frage behandelt die Verwendung von ['bind'] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind), um das Problem zu beheben - verwechseln Sie es nicht mit Ihrer eigenen 'Bind'-Funktion, die Sie definiert haben. –
Dies wurde bereits als ein Duplikat markiert, aber @GillesC stimmt von dem, was ich sagen kann. Sie können den richtigen Kontext mit 'window.setTimeout (this.start.bind (this), 300);'. –
Nun, ich könnte etwas gefunden haben: – Axel