0

我正在用 JS 编写一个函数,但变量标记有问题。

编码:

    function piano(numero, link) {

            var marker;
            this.marker = marker;

            var immagine = loadImage(link, marker);
            this.immagine = immagine


            function createMarker() {

                    return new RichMarker({

                           ....

                    });
            }

            function loadImage(link, marker) {

                    var immagine = new Image();

                    immagine.src = link;

                    immagine.onload = function() {
                            marker = createMarker();  
                    };  

                    return immagine;
             }

             ....

变量immagine被初始化,调用函数loadImage来加载图片。

在这个函数中,它是代码:

                    immagine.onload = function() {
                            marker = createMarker();  
                    };  

在加载图像后必须分配标记。

当我尝试访问marker时,在加载图像后,它总是导致undefined;我确定RichMarker已创建。

我不明白为什么会这样。

4

1 回答 1

0

JavaScript 变量将存储对对象的引用,但您不能共享引用来表示 a NumberorStringundefined。如果marker不是数组或对象,那么当您稍后修改它时markerthis.marker它不会是同一个对象(将其视为复制值,而不是分配引用)。

而是尝试确定this对象的范围,以便稍后您可以再次引用该对象

function piano(numero, link) {
    var self = this;
    this.immagine = loadImage(link);


    function createMarker() {
        return new RichMarker({
            //...
        });
    }

    function loadImage(link) {
        var immagine = new Image();
        immagine.src = link;

        immagine.onload = function() {
            //use the scoped version of 'this'
            self.marker = createMarker();  
        };  

        return immagine;
     }

     //...
 }
于 2013-03-03T00:29:22.067 回答