是否可以更改传递给函数的引用?

时间:2018-11-18 15:44:34

标签: javascript jquery

我有一个全局对象,我试图将其引用传递给函数,然后在调用的函数中更改引用所指向的对象。这是一个简单的3元素数组的问题示例:

var myObject = [1, 2, 3]; //this is global
changeObject(myObject);

function changeObject(obj) {
  $('#beforeLocal').html( obj.toString() );
  $('#beforeGlobal').html( myObject.toString() );
  obj = [4, 5, 6];
  $('#afterLocal').html( obj.toString() );
  $('#afterGlobal').html( myObject.toString() );
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Local array before changing: <span id="beforeLocal"></span></p>
<p>Global array before changing: <span id="beforeGlobal"></span></p>
<p>Changing local array</p>
<p>Local array after changing: <span id="afterLocal"></span></p>
<p>Global array after changing: <span id="afterGlobal"></span></p>

但是,当更改本地对象时,它仅更改本地引用,而不更改全局引用。我知道在这个例子中,

obj[0] = 4;
obj[1] = 5;
obj[2] = 6;

会工作的。

我想实现这一目标而不需要遍历数组的所有值,并且我还希望它通常用于不同大小和/或对象的数组。

我需要这样做,因为我需要通用函数,所以我不能直接在函数内部引用全局数组(因为它需要用于多个数组),并且我也不能使用返回值,因为这是我需要异步执行的操作(这是一个简化的问题)。

0 个答案:

没有答案