我正在创建一个加载图像并在加载后调用其方法的类。
function Texture(){
this.afterload = function(){
document.write("loaded!");
}
this.load = function(name){
this.img = new Image();
this.img.src = name;
this.img.onload = function(){
// there is the problem - how to pass "this" to anonymous function?
this.afterload();
}
}
}
texture = new Texture();
texture.load("something.png");
// now it should write "loaded" after loading the image.
但问题是传递一个链接到该对象。当我使用它时,它不起作用。
那么有没有办法将对象实例传递给匿名方法?
答案 0 :(得分:1)
您只需将this
复制到词法变量:
this.load = function(name){
this.img = new Image();
this.img.src = name;
var _this = this;
this.img.onload = function(){
_this.afterload(); // use local variable, '_this', instead of 'this'
};
};
匿名函数将“捕获”或“关闭”该变量,并且即使在其包含函数返回后仍能够引用它。
答案 1 :(得分:1)
定义指向内部函数之外的对象的另一个变量,并使用此变量来引用它。
var that = this;
this.img.onload = function(){
that.afterload();
};