关于Javascript指向对象属性的指针的问题

时间:2011-04-14 18:26:23

标签: javascript object reference

我想设置一个变量来指向新创建的对象中的属性以保存“查找”,如下例所示。基本上,我认为变量是对象属性的引用。不是这种情况;它看起来像变量保存值。第一个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);

2 个答案:

答案 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属性所拥有的。