これはスコープの問題だと思いますが、これを修正する方法がわかりません。 addContent
プリントしばらくオブジェクト、http://jsfiddle.net/9k9Pe/1498/javascript ES6クラスの「this」は未定義です
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()
プリント未定義: はここに私のコードです。
これを修正するには、フレームがロードされたときにこれを参照することができますか?
おかげ
'iframe.onload =()=> this.frameLoaded()を試してみてください;' ' –
VAR frameLoaded = this.frameLoaded;'スタータのため、それをしません。または少なくともそれを拘束する。 –
'iframe.onload'でどの' frameLoaded'メソッドを実行したいのか、そして 'this'値を使うのかは不明です。 – Oriol