1
Прежде всего, я знаю, что есть миллионы таких вопросов. Но я ничего не мог мне помочь.Метод Javascript Object Inopcessible/Undefined
Я вызываю метод draw после загрузки всех изображений. Как вы можете видеть, когда я пытаюсь получить доступ к переменной (loadedImages, this
) внутри метода draw, я получаю undefined.
Почему это происходит и как я могу получить переменные?
var canvas = $('#area')[0],
context = canvas.getContext('2d');
function Character() {
return {
images: ["hair.png", "head.png", "mouth.png"],
loadedImages: {},
init: function() {
this.loadImages();
},
loadImages: function() {
var loaded = 0,
imagesLength = this.images.length,
draw = this.draw;
for(var i = 0; i <= imagesLength - 1; i++) {
var image = new Image(),
bodyPart = this.images[i];
image.onload = function() {
loaded++;
if(loaded == imagesLength) {
draw();
}
};
image.src = 'characters/Canser/' + bodyPart;
this.loadedImages[bodyPart.split(".")[0]] = image;
}
},
draw: function() {
console.log(this); // undefined???
}
};
}
var canser = new Character();
canser.init();
Именно так вы называете 'draw'! 'this.draw()' отличается от 'draw()'. – deceze
Если я это сделаю, объект изображения вернется и не будет метода draw. Смотрите: image.onload –
Попытайтесь понять 'scope'' this' в вашем контексте. (Ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this) – lexith