首页 > 解决方案 > 是否可以更改传递给函数的引用?

问题描述

我有一个全局对象,我试图将它的引用传递给一个函数,然后在调用的函数中更改引用指向的对象。这是一个简单的 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;

会工作。

我想在不循环遍历数组的所有值的情况下实现这一点,而且我希望它通常适用于不同大小和/或对象的数组。

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

标签: javascriptjquery

解决方案


推荐阅读