Myślę, że jest to problem z zasięgiem, ale nie jestem pewien, jak to naprawić. Oto mój kod: http://jsfiddle.net/9k9Pe/1498/javascript 'this' w klasach ES6 zwraca undefined
class FrameCreator{
constructor(){
this.createFrame();
}
createFrame(){
var iframe = document.createElement('iframe');
this.iframe = iframe;
var frameLoaded=this.frameLoaded;
iframe.onload = function() {
frameLoaded();
};
document.body.appendChild(iframe);
}
frameLoaded(){
console.log("frame loaded");
}
}
class CustomFrameCreator extends FrameCreator{
addContent(){
console.log(this); // returns the object
}
frameLoaded(){
console.log(this); // returns undefined
}
}
var frame=new CustomFrameCreator();
frame.addContent();
frameLoaded()
drukuje niezdefiniowany, podczas addContent
wydruków przedmiot.
Jak to naprawić, więc mogę mieć odwołanie w tej sytuacji po załadowaniu ramki?
Dzięki
Spróbuj 'iframe.onload =() => this.frameLoaded();' ' –
var frameLoaded = this.frameLoaded;' nie rób tego, na początek. lub przynajmniej go związać. –
Nie jest jasne, która metoda 'frameLoaded' ma być uruchomiona w' iframe.onload' i z jaką wartością 'this'. – Oriol