我想设置一个变量来指向新创建的对象中的属性以保存“查找”,如下例所示。基本上,我认为变量是对象属性的引用。不是这种情况;它看起来像变量保存值。第一个console.log是1(这是我要分配给photoGalleryMod.slide的值)但是当看photoGalleryMod.slide时,它仍然是0。
有办法做到这一点吗?感谢。
(function() {
var instance;
PhotoGalleryModule = function PhotoGalleryModule() {
if (instance) {
return instance;
}
instance = this;
/* Properties */
this.slide = 0;
};
}());
window.photoGalleryMod = new PhotoGalleryModule();
/* Tried to set a variable so I could use test, instead of writing photoGalleryMod.slide all the time plus it saves a lookup */
var test = photoGalleryMod.slide;
test = test + 1;
console.log(test);
console.log(photoGalleryMod.slide);
答案 0 :(得分:3)
是的,您正在复制该值,因为“slide”设置为基本类型。试试这个:
this.slide = [0];
然后
var test = photoGalleryMod.slide;
test[0] = test[0] + 1;
然后更改日志记录:
console.log(test[0]);
console.log(photoGalleryMod.slide[0]);
在这种情况下,您会看到做具有对同一对象的引用。与其他一些语言(C ++)不同,在JavaScript中没有办法说“请给我这个变量的别名”。
答案 1 :(得分:2)
看起来该变量包含值
这是对的。由于您使用数字原语,变量包含值而不是指向它。变量在引用对象时仅包含引用。
这样做的方法是使用一个object属性并指向该对象 - 这正是你对photoGalleryMod
及其slide
属性所拥有的。