Javascript中的动态变量(通过引用调用)

Javascript中的动态变量(通过引用调用),javascript,dynamic-variables,pass-by-reference,Javascript,Dynamic Variables,Pass By Reference,当变量引用对象时,该值是对对象的引用(引用自:) 但是我想更改对象的变量,例如 function fun2(obj) { obj = 1; } var myObj2 = {first: 0}; fun2(myObj2.first); console.log(myObj2.first); 有没有办法做到这一点 有没有办法做到这一点 不直接。您所能做的就是传递一个对象并让函数修改它的属性,如第一个示例所示。JavaScript没有按引用传递,只有按值传递。(当然,该值可能是一个对象引用,

当变量引用对象时,该值是对对象的引用(引用自:)

但是我想更改对象的变量,例如

function fun2(obj) {
obj = 1;      }
var myObj2 = {first: 0};
fun2(myObj2.first);
console.log(myObj2.first);
有没有办法做到这一点

有没有办法做到这一点

不直接。您所能做的就是传递一个对象并让函数修改它的属性,如第一个示例所示。JavaScript没有按引用传递,只有按值传递。(当然,该值可能是一个对象引用,但它仍然是一个值。)在JavaScript中无法直接修改传递给函数的变量/属性,因为函数接收的是该变量/属性值的副本,而不是该变量/属性的引用


只是想澄清一点:在您的第一个代码块中,您说您正在“将对象发送到函数”。这是不正确的。向函数的对象发送引用

这是需要理解的关键:变量、属性和函数参数(统称为“变量”)包含值,这些值在使用赋值或将其传递到函数时被复制。引用对象的值称为对象引用,因为该值不是对象,而是对内存中其他位置的对象的引用(指针)。当您将引用传递到函数中时,会复制该引用,而对象不会被复制


不要混淆“对象引用”中的“引用”和“通过引用传递”中的“引用”,它们是完全不同的东西。(在pass-by-reference中,引用的是变量,而不是对象。JavaScript没有pass-by-reference。)

很难理解您在这里真正想要实现什么。是否要借助函数更改对象属性的值?
function fun2(obj) {
obj = 1;      }
var myObj2 = {first: 0};
fun2(myObj2.first);
console.log(myObj2.first);