覆盖对象引用的值

时间:2018-06-21 18:02:09

标签: javascript reference ecma

将对象引用作为参数传递给函数时,分配给该引用只会更改引用的内容,而不会更改值,例如:

class meh {
    constructor() {
        this.obj = { member: 7 };
    }

    doSomething() {
        doFn(this.obj);
    }
    doFn(objRef) {
        objRef = { newMember: 4 } // Doesn't overwrite obj; merely assigns a new object to objRef.
    }
}

但是有没有办法覆盖或以其他方式为对象引用所指向的实际位置分配值?意思是,是否有一种方法可以将新对象分配给objRef(在doFn中,并在obj中体现出来?

1 个答案:

答案 0 :(得分:-1)

这取决于您的情况。

以react为例,您可以将变量存储在一个状态中,该状态有一个用于更新的预建函数,称为this.setState,但是,如果您使用的是纯JavaScript,则可以创建自己的global存储区变量,然后直接更新它们。我不建议这样做,但是作为示例,您可以将变量存储在window ['somevariable']下以将其存储在window对象中,以后可以访问这些变量。

为使其更加精美,您可以创建预构建函数来为您执行可以调用的工作,将变量的参数和值作为对象进行更新,然后将状态的特征。

再举一个例子,Redux通过集中化的“存储”将其整齐地设计出来,在其中您可以向其中发送数据或从中检索数据,然后进行校验。

希望它能回答您的问题。