0

私はこのようなクラスを持っています

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でこのオブジェクトへの参照があります。

4

2 に答える 2

0

これは私があなたがすべきだと思うことです:

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);
    }
}
于 2012-02-06T22:19:16.150 に答える