Javascript 如何通过函数更改对象

Javascript 如何通过函数更改对象,javascript,Javascript,在一个任务中,我必须通过将对象传递给函数来更改对象。几乎是这样的: 功能更改(obj){ 返回{ fn1:函数(){ obj['three']=3; }, fn2:函数(){ obj={'four':4}; } }; } var obj={'one':1,'two':2}; console.log(obj);//输出'Object{one=1,two=2}' var temp=变化(obj); 温度fn1(); console.log(obj);//输出'Object{one=1,two=

在一个任务中,我必须通过将对象传递给函数来更改对象。几乎是这样的:
功能更改(obj){
返回{
fn1:函数(){
obj['three']=3;
},   
fn2:函数(){
obj={'four':4};
}
};
}
var obj={'one':1,'two':2};
console.log(obj);//输出'Object{one=1,two=2}'
var temp=变化(obj);
温度fn1();
console.log(obj);//输出'Object{one=1,two=2,three=3}'
温度fn2();

console.log(obj);//输出“Object{one=1,two=2,three=3}”
在JavaScript中,参数是按值传递的,尽管该值通常具有类似指针的语义。当您运行
obj['three']=3时,您没有重新绑定变量
obj
;您只是在更改
obj
当前持有的对象的属性。另一方面,当您重新分配
obj
时,您正在更改变量
obj
,而不是变量用来保存的对象。您无法在JavaScript中实现所需的语义;您所能做的最好是删除
obj
的所有属性,并复制您想要在其上的任何属性。

使用第二个函数,您将更改局部变量
obj
从其原始引用的赋值,并将其赋值给新对象。与此问题相同的基本问题: