1
Objekt.prototype.loadImg = function(pImg){
    if(pImg!=null){
        this.imgLoaded=false;
        this.img = null;
        this.img = new Image();         
        this.img.src = pImg;     
        this.img.onload = function(){
            alert("!");
            this.autoSize();                
            this.imgLoaded=true;
        }; 

    }
}

私の問題は、「onload = function()」関数で「this」が無効であることです!

アラート("!"); 実行されますが、たとえば Objekt.prototype.autoSize() 関数は実行されません!

"class-intern" 関数 (autoSize など) を呼び出すにはどうすればよいですか ???

4

1 に答える 1

1

これonloadは、オブジェクトをレシーバーとして関数が呼び出されないためです。したがってthis、このコールバック内では、目的のオブジェクトではありません。

thisこれを行うと、onloadコールバックに送信できます。

Objekt.prototype.loadImg = function(pImg){
    if(pImg!=null){
        this.imgLoaded=false;
        this.img = null;
        this.img = new Image();         
        this.img.src = pImg;     
        var _this = this;
        this.img.onload = function(){
            alert("!");
            _this.autoSize();                
            _this.imgLoaded=true;
        }; 
    }
}
于 2012-07-09T08:41:40.690 に答える