JavaScript: как ссылаться на класс из события - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть такой класс

var grid = function () {

    this.cell = null;

    this.loadImage = function () {

       var image = new Image();
       var object = this;

       image.src = "blah";

       $(image).load(function () { 
           object.cell = this;                    
       });
    }

    this.showImage = function () {
       alert(object.cell); // This should print [object Object] ... but it print null;
    }
}

Функция showImage вызывается после вызова изображения, загруженного из функции loadImage. Кто-нибудь знает, почему object.cell имеет значение null ... У меня есть ссылка на этот объект в loadImage.

Ответы [ 2 ]

3 голосов
/ 07 февраля 2012

object не определено в showImage.

0 голосов
/ 07 февраля 2012

Я думаю, что вы должны делать:

var grid = function () {

    this.cell = null;

    this.loadImage = function () {

        var image = new Image();

        image.addEventListener("load", (function (obj) { 
            return function () {
                obj.cell = this;                    
            };
        })(this));

        image.src = "http://upload.wikimedia.org/wikipedia/commons/8/84/Example.svg";

    }

    this.showImage = function () {
        alert(this.cell);
    }
}
...