我想增加一个对象 SCountDown 的属性 pomodoro方法 customization ,它有一个参数 chooseSession 和这个方法
sessionPlus 方法中调用 SCountDown 作为参数。
当我调用 sessionPlus 方法时,SCountDown 属性增加
一次和第二次调用时,依此类推,它不会增加。

这是我的代码:

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.

最佳答案

当您将 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 - 如何通过参数变量更新对象的属性值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34447154/

10-10 06:43