在JavaScript中强制通过引用传递

时间:2018-10-29 22:43:41

标签: javascript

有没有办法强制在javascript中通过引用传递?我已经读过对象是作为“对象引用副本”或按共享调用传递的,但是我希望跨功能的更改能够在发送方和接收方之间反映出来。当前的设计使我无法将其声明为全局变量。有关如何处理此问题的任何想法?

例如,考虑下面的代码->

enter image description here

现在,当我执行function1时,我得到->

enter image description here

如何确保function1的值已更改/更新?

2 个答案:

答案 0 :(得分:0)

我找到了这个https://codeburst.io/javascript-pass-by-value-and-pass-by-reference-in-javascript-fcf10305aa9c

  

但是,当变量引用包含数组的对象时,   值是对对象的引用

答案 1 :(得分:0)

您应该更新现有对象,而不是在function2中创建新对象。

var function1 = function () {
    var myVar = {1: 'one', 2: 'two'};
    console.log('In one before call->');
    console.log(myVar);
    function2(myVar);
    console.log('In one after call->');
    console.log(myVar);
};

var function2 = function (myVar) {
    console.log('In two before manipulation->');
    console.log(myVar);
    
    // Update the values instead of creating new object
    myVar = Object.assign(myVar, {1: 'three', 2: 'nine'});

    console.log('In two after manipulation->');
    console.log(myVar);
};

function1();