Javascript : 加载参考 class 属性
Javascript : Onload with reference to class property
我正在尝试预加载图像,同时获取它们的宽度和高度。要获取图像的高度和宽度,我需要使用 onload 方法。但我不明白如何获得对图像和 class 对象(我从中调用)的引用。当我发现图像太小时,我需要将其从 class 属性.
中的数组中删除
这是我的代码。
class Estate {
this.jsonData;
constructor() {
this.cachePresImages();
}
cachePresImages() {
let theImages = this.jsonData.images;
for (let i=0; i < theImages.length; i++){
let image = new Image();
image.src = theImages[i].url;
let that = this;
image.onload = (that) => {
console.log(that);
console.log(that.jsonData.images);
console.log(this.width);
if ( this.naturalHeight < 10000 || this.naturalWidth < 100){
that.jsonData.images[i].splice(i,1);
}
return true;
};
};
}
}
以上代码会将其视为未定义,并抛出此错误消息:"Cannot read property 'jsonData' of undefined at Image.image.onload"
简单地省略事件处理程序中的参数,这会覆盖您的闭包。
我正在尝试预加载图像,同时获取它们的宽度和高度。要获取图像的高度和宽度,我需要使用 onload 方法。但我不明白如何获得对图像和 class 对象(我从中调用)的引用。当我发现图像太小时,我需要将其从 class 属性.
中的数组中删除这是我的代码。
class Estate {
this.jsonData;
constructor() {
this.cachePresImages();
}
cachePresImages() {
let theImages = this.jsonData.images;
for (let i=0; i < theImages.length; i++){
let image = new Image();
image.src = theImages[i].url;
let that = this;
image.onload = (that) => {
console.log(that);
console.log(that.jsonData.images);
console.log(this.width);
if ( this.naturalHeight < 10000 || this.naturalWidth < 100){
that.jsonData.images[i].splice(i,1);
}
return true;
};
};
}
}
以上代码会将其视为未定义,并抛出此错误消息:"Cannot read property 'jsonData' of undefined at Image.image.onload"
简单地省略事件处理程序中的参数,这会覆盖您的闭包。