我正在用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();
};
在加载图像后必须分配标记。
当我尝试访问标记时,在加载图片后,它总是会导致 undefined ;我确信已经创建了 RichMarker 。
我不明白为什么会发生这种情况。
答案 0 :(得分:0)
JavaScript变量会存储对象的引用,但您无法共享引用Number
或String
或undefined
的引用。如果marker
不是数组或对象,那么marker
和this.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;
}
//...
}