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;
        }; 

    }
}

我的问题是“this”在“onload = function()”函数中无效!

警报(”!”); 被执行,但不是 Objekt.prototype.autoSize() 函数,例如!

我该怎么做才能调用我的“实习生”功能(例如 autoSize)?

4

1 回答 1

1

那是因为onload没有以您的 objekt 作为接收者来调用该函数。因此this,在此回调中,不是所需的对象。

您可以这样做以传输thisonload回调:

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 回答