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

Question about Javascript pointer to an object property

本文关键字:属性 问题 对象 Javascript 指针 关于      更新时间:2023-09-26

我想设置一个变量来指向新创建对象中的属性,以保存"查找",如下面的示例所示。基本上,我认为变量是对对象属性的引用。事实并非如此;看起来这个变量保存了这个值。第一个console.log是1(这是我想分配给photoGalleryMod.slide的值),但当查看photoGalleryMod. log时。滑动,还是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);

是的,您正在复制该值,因为"slide"被设置为基本类型。试试这个:

this.slide = [0];

var test = photoGalleryMod.slide;
test[0] = test[0] + 1;

然后更改日志记录:

console.log(test[0]);
console.log(photoGalleryMod.slide[0]);
在这种情况下,您将看到都有对同一对象的引用。不像其他语言(c++), JavaScript没有办法说"请给我这个变量一个别名"。

看起来变量保存的值是

这是正确的。由于您使用的是数字原语,因此变量包含值,而不是指向它。变量只有在引用对象时才包含引用。

方法是使用对象属性并指向对象 —这正是photoGalleryMod和它的slide属性。