为什么我的javascript参数没有通过"引用"传递?

Gre*_*ods 1 javascript

我确定我在这里遗漏了一些明显的东西,但是我希望changeMe方法的参数可以"通过引用"传递 - 换句话说,对函数内部参数的更改将改变函数外部的变量.

以下内容在jsfiddle中运行,使用Chrome的F12开发人员工具显示控制台输出.http://jsfiddle.net/fzEpa/

var object1 = { Property1: 'Value1' };
changeMe(object1);
console.log(object1);

function changeMe(refToObject) {
    console.log(refToObject);
    refToObject = { Property1: 'Value2' };
    console.log(refToObject);
}
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 11

它通过引用传递,但它是对象的引用,而不是对object1变量的引用(也是对象的引用).

您将通过引用新对象来覆盖对象的引用.

这使原始对象的原始引用保持不变.

要修改对象,您可以执行以下操作:

function changeMe(refToObject) {
    refToObject.Property1 = 'Value2';
}
Run Code Online (Sandbox Code Playgroud)