从函数中修改JavaScript对象变量
我有一个问题,修改变量转换为函数参数。例如:从函数中修改JavaScript对象变量,javascript,Javascript,我有一个问题,修改变量转换为函数参数。例如: 函数fun(){ 这是a=1; 这是b=2; this.show=函数(){ 本.增量(本.a); 这个增量(这个b); console.log(this.a);//应为2 console.log(this.b);//应为3 } this.increment=函数(elem){ elem+=1; } } var funObj=新乐趣(); funObj.show()当您传递一个参数时,您传递了变量中所包含内容的副本。对于数字等基本体,您传递的是该数
函数fun(){
这是a=1;
这是b=2;
this.show=函数(){
本.增量(本.a);
这个增量(这个b);
console.log(this.a);//应为2
console.log(this.b);//应为3
}
this.increment=函数(elem){
elem+=1;
}
}
var funObj=新乐趣();
funObj.show()代码>当您传递一个参数时,您传递了变量中所包含内容的副本。对于数字等基本体,您传递的是该数字的副本,因此对传递内容的更改不会影响原始数字
在您的情况下,不要传递实际数据,而是传递一个“标志”,该标志确定应该更新哪些原始数据值
函数fun(){
这是a=1;
这是b=2;
this.show=函数(){
//只需传递一个“标志”,指示要使用哪个属性
本条为增量(“a”);
本条为增量(“b”);
console.log(this.a);//应为2
console.log(this.b);//应为3
}
this.increment=函数(prop){
//检查标志并相应地进行操作
prop==“a”?this.a++:this.b++;
}
}
var funObj=新乐趣();
funObj.show()代码>我认为您传递的是原语,因此它们不会保留值中的更改。不要生成this.increment函数,只需在循环中执行它 在您的场景中,您可以简单地执行此操作。您不需要为增量保留单独的函数
函数fun(){
这是a=1;
这是b=2;
this.show=函数(){
这个.a++;
这是.b++;
console.log(this.a);//应为2
console.log(this.b);//应为3
}
}
var funObj=新乐趣();
funObj.show()
this.increment(this.a)
不会变异this.a
,因为JS总是按值传递。