通过引用更改值

时间:2014-01-14 15:49:32

标签: javascript pass-by-reference

我想将值传递给Change函数。但我想只传递数组中的引用。这有效:

var test = ["Hello World","Hello You"];
HelloCar(test,0);

function HelloCar(myarray,key)
{
    myarray[key] = "Hello Car";
}

但这会失败:

var test = ["Hello World","Hello You"];
HelloCar(test[0]);

function HelloCar(myvalue)
{
    myvalue = "Hello Car";
}

有没有办法只传递实际参考,没有完整的数据?

2 个答案:

答案 0 :(得分:0)

如何使用原型:

Array.prototype.HelloCar= function ( idx ) {

  this[idx] = 'Hello Car'

 }

 test.helloCar(0)

答案 1 :(得分:0)

原始类型(如字符串,数字和布尔值)始终作为值传递,而不是引用。

最接近模拟引用变量的方法是将它们包装在Object中。

然而,您可能会感到欣慰的是,您可以在不尝试根据自己的意愿弯曲JavaScript语法的情况下实现您需要做的任何事情。

如果你担心某个方法可以访问数据,那么它(不是我在你的实例中可以看到任何理由),那么我会这样写:

var test = ["Hello World","Hello You"];

test[0] = HelloCar(test[0]);

function HelloCar(string){

  // any logic to change string in any way
  string = "HelloCar";

  return string;

}

这可能看起来有点无意义,但让我们假装(为了论证)你可以传递对基本类型变量的引用......如果是这样,方法可以访问的唯一信息就是它的值,因为字符串变量比内存地址和值更多。作为一个字符串,除了一堆字符之外,它没有大量的信息。因此,我们需要以扭曲其值的方式应用于变量的任何逻辑实际上将基于与上述方法相同的原理。