我认为这是一个作用域问题,但我不确定如何修复它。这是我的代码:http://jsfiddle.net/9k9Pe/1498/
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()
会打印undefined,而addContent
会打印该对象。
如何修复这个问题,以便在帧加载时可以引用它?
谢谢。
iframe.onload = () => this.frameLoaded();
- Dan Princevar frameLoaded=this.frameLoaded;
- Kevin Biframe.onload
时运行哪个frameLoaded
方法,以及使用哪个this
值。 - Oriol