Javascript 如何通过参数变量更新对象属性的值

Javascript 如何通过参数变量更新对象属性的值,javascript,object,scope,parameter-passing,Javascript,Object,Scope,Parameter Passing,我想用 方法customization,它有一个参数chooseSession和此方法 在sessionPlus方法中调用,并将scontdown作为参数传递。 当我调用sessionPlus方法时,scontdown属性为 当它被第二次调用时,它不会递增 这是我的密码: pomodoro = { SCountDown: 0, customization: function(chooseSession) { chooseSession++; console.log(c

我想用 方法
customization
,它有一个参数
chooseSession
和此方法 在
sessionPlus
方法中调用,并将
scontdown
作为参数传递。 当我调用
sessionPlus
方法时,
scontdown
属性为 当它被第二次调用时,它不会递增

这是我的密码:

pomodoro = {   
 SCountDown: 0,
 customization: function(chooseSession) {
    chooseSession++;
     console.log(chooseSession);       
 },
 sessionPlus : function() {
    this.customization(this.SCountDown);        
 }
}
pomodoro.sessionPlus(); // it returns 1 , this is what i needed but
pomodoro.sessionPlus(); // it also returns 1, but what i need is 2.

试试这个代码。您需要递增此。向下搜索选择会话

pomodoro={
侦察员:0,
自定义:功能(选择会话){
console.log(选择会话);
},
sessionPlus:function(){
这个.showndown++;
this.customization(this.scontdown);
}
}
pomodoro.sessionPlus();

pomodoro.sessionPlus()当您将
this.SCountDown
传递到
customization
时,您将传递其值(即零)。然后,将该值增加1并输出。
this.SCountDown
的实际值永远不会更改

JavaScript通过值传递原语
这意味着无法通过将原语传递给函数来修改原语

function modify(a)
{
    a = a * 2;
}

var x = 2;
modify(x);
console.log(x); // 2
但是,您可以修改传递对象的内部属性,因为JS使用通过共享调用的策略。
因此,您可以执行以下操作:

function modify(o)
{
    o.val = o.val * 2;
}

var x = { val: 2 };
modify(x);
console.log(x.val); // 4

JavaScript使用pass-by-sharing,由于ScontDown是一个基本值(整数),因此不能以您尝试的方式引用它。它将始终记录为1,因为您将始终传入原语值0,然后将其递增。您需要直接引用
this.SCountDown
,而不是
chooseSession

var pomodoro = {
    SCountDown: 0,
    customization: function(chooseSession) {
        console.log(chooseSession);
    },
    sessionPlus: function() {
        this.SCountDown++;
        this.customization(this.SCountDown);
    }
}

pomodoro.sessionPlus();
pomodoro.sessionPlus();
pomodoro={
侦察员:0,
自定义:函数(){
console.log(this.SCountDown);
},
sessionPlus:function(){
this.scontdown=this.scontdown+1;
这个。定制();
}
}
pomodoro.sessionPlus();//它返回1,这是我需要的,但是

pomodoro.sessionPlus();//它还返回1,但我需要的是2。
在JavaScript中不能通过引用传递变量。如果要将变量传递到函数并使该函数递增,则需要传入一个对象并递增其一个属性,或者重新考虑解决方案,这样就不需要按引用传递。谢谢@Monica Olejniczak