这是 fiddle :http://jsfiddle.net/Xh4GU/1 或代码:
function Vector()
{
var v = new Array(123, 456, 789);
this.getV = function()
{
return v;
}
}
function Formulas()
{
this.add = function(x, axis, units)
{
x[axis] += units;
}
}
var vector = new Vector();
var formulas = new Formulas();
var v = vector.getV();
var vAdded = formulas.add(v, 0, 77)
document.write(v);
吐出:200,456,789
为什么 v 的第一个索引被改变? 谢谢
最佳答案
因为数组通过引用传递给,所以传递的参数formulas.add
formulas.add
是对私有(private)数组的引用v
,您对其内容所做的任何更改将来仍然可见。
当您将对 v
的引用分发给外部代码时,v
是私有(private)的这一事实并不能保护其内容。它确实可以防止外部代码为自身获取 v
并将 v
与另一个数组交换,但数组本身可以修改(其值已更改)。
关于javascript - 为什么我的私有(private)变量被改变了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12886839/