Javascript 未定义变量返回的赋值

Javascript 未定义变量返回的赋值,javascript,undefined,Javascript,Undefined,我正在学习一个法语教程,我被一个未定义的变量卡住了,可能我遗漏了什么,似乎值被分配给了变量,但我无法访问它,可能是范围问题 function Tileset(url) { // Chargement de l'image dans l'attribut image this.image = new Image(); this.image.referenceDuTileset = this; this.image.onload = function() {

我正在学习一个法语教程,我被一个未定义的变量卡住了,可能我遗漏了什么,似乎值被分配给了变量,但我无法访问它,可能是范围问题

function Tileset(url) {
    // Chargement de l'image dans l'attribut image
    this.image = new Image();
    this.image.referenceDuTileset = this;
    this.image.onload = function() {
        if(!this.complete) 
            throw new Error("Erreur de chargement du tileset nommé \"" + url + "\".");

        // Largeur du tileset en tiles
        this.referenceDuTileset.largeur = this.width / 32;
    }

    this.image.src = "tilesets/" + url;
}

Tileset.prototype.dessinerTile = function(numero, context, xDestination, yDestination) {
    var xSourceEnTiles = numero % this.largeur;
    console.log(this);
    if(xSourceEnTiles == 0) xSourceEnTiles = this.largeur;
    var ySourceEnTiles = Math.ceil(numero / this.largeur);
    var xSource = (xSourceEnTiles - 1) * 32;
    var ySource = (ySourceEnTiles - 1) * 32;
    context.drawImage(this.image, xSource, ySource, 32, 32, xDestination, yDestination, 32, 32);
}
console.log的输出(此):

console.log(this.largeur)的输出


prototype.Dessintile中未定义this.largeur。这是导致它崩溃的原因!试试这个.referenceDuTileset.largeur。@PhilipG你是说这个.image.referenceDuTileset吗?因为this.referenceDuTileset.largeur返回未捕获的TypeError:无法读取未定义的属性'largeur'
-> Tileset {image: img, dessinerTile: function}
-> image: img 
largeur: 6
-> __proto__: Tileset
undefined