Javascript:如何称呼这个.Something() from this.img.onload = SomeLoa

Javascript: How to call this.Something() from this.img.onload = SomeLoadFunction;

本文关键字:this from img onload SomeLoa Something Javascript      更新时间:2023-09-26

好的,我有一些类似的代码...

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.DoSomeStuff不再Thing.DoSomeStuff并变得img.DoSomeStuff

所以我想我需要知道的是,如何从img.onLoad调用Thing.DoSomeStuff()函数......

在 ES5 上,您可以使用:

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

或:

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

附言:您当前的代码并不合法。 除此之外,变量的作用域错误(或者不是this的属性),并且函数声明语法不正确。

你可能想要这个

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");​

演示