Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从函数中修改JavaScript对象变量_Javascript - Fatal编程技术网

从函数中修改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总是按值传递。