0

OK、これに似たコードがあります...

Thing function () {    
  var img = new Image;    
  DoSomeStuff function() {    
  //Some stuff here that can't be done until my img is loaded...    
};

InitMe function(src) {    
  this.img.onLoad = this.DoSomeStuff;     
  this.img.src = src;    
};    
}

var Test = new Thing();    
Test.InitMe("some string");

存在しなくなり、なるために明らかに機能しませthis.DoSomeStuffThing.DoSomeStuffimg.DoSomeStuff

だから私が知る必要があるのは、どうすれば....Thing.DoSomeStuff()から関数を呼び出すことができるかということです.img.onLoad

4

2 に答える 2

1

ES5 では以下を使用できます。

this.img.onLoad = this.DoSomeStuff.bind(this);

また:

var self = this;
this.img.onLoad = function() {
    self.DoSomeStuff();
}

ps 現在のコードはリモートで合法ではありません。とりわけ、変数のスコープが間違っている (またはのプロパティではないthis) と、関数宣言の構文が正しくありません。

于 2012-08-15T08:05:22.037 に答える
0

あなたはこれが欲しいかもしれません

function Thing() {    
    this.img = new Image;    
    this.DoSomeStuff=function(){
        // do something
    };

    var self=this;
    this.InitMe=function(src) {   
        self.img.src = src;
        self.img.onload = function(){
            self.DoSomeStuff();
        }
    };    
}

var Test = new Thing();    
Test.InitMe("example.png");​

デモ

于 2012-08-15T08:43:21.700 に答える