如何通过参数变量更新对象的属性值
how to update value of property of an object through argument variable
我想递增对象的属性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.
JavaScript 使用共享传递,由于 SCountDown 是一个原始值(整数(,因此无法以您尝试的方式引用它。它总是会记录为 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();
当你把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
试试这段代码。您需要增加此值。不选择会话
pomodoro = {
SCountDown: 0,
customization: function(chooseSession) {
console.log(chooseSession);
},
sessionPlus: function() {
this.SCountDown++;
this.customization(this.SCountDown);
}
}
pomodoro.sessionPlus();
pomodoro.sessionPlus();
希望这对您有所帮助。
pomodoro = {
SCountDown: 0,
customization: function() {
console.log(this.SCountDown);
},
sessionPlus : function() {
this.SCountDown=this.SCountDown+1;
this.customization();
}
}
pomodoro.sessionPlus(); // it returns 1 , this is what i needed but
pomodoro.sessionPlus(); // it also returns 1, but what i need is 2.
愿这有帮助
相关文章:
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法
- 使用onclick调用属性对象函数
- 嵌套为..in 循环,列出多维对象的属性(对象)
- 动态属性对象 - JSON
- 在不使用隔离范围angularjs自定义指令的情况下获取属性对象
- 通过属性传递属性/对象.Javascript
- Javascript:属性/对象的类型
- 访问JSON中的属性(对象)
- 属性对象Javascript不是用Jquery Deferred设置的
- 无法读取属性'#<对象>'未定义的获取错误
- Twitter中多属性对象的子字符串匹配
- 无法设置'data'属性'对象'标记.(只IE8)
- 更新数据属性对象属性值
- 将属性对象的选定对象从原型推入数组
- 将单个属性对象字面量的数组转换为仅包含其值的数组的最佳方法
- 寻找一种更简单的方法来检查是否多个属性&对象中的方法是未定义的
- 主干模型:带有get方法的空属性,但在属性对象中
- 如何赋值给"text"someText"属性对象在动能js
- Angularjs的数据绑定与数据属性对象
- 如何将一个嵌套的javascript对象转换为只有一级属性对象