var obj = {
bob : 14
jan : 2
}
相同的密钥。如果我到这个对象,如obj.bob =“12”, 有没有办法来增加这让鲍勃:鲍勃替换它的26来代替: 12? 谢谢。添加值,如果从Object
var obj = {
bob : 14
jan : 2
}
相同的密钥。如果我到这个对象,如obj.bob =“12”, 有没有办法来增加这让鲍勃:鲍勃替换它的26来代替: 12? 谢谢。添加值,如果从Object
所以,你用这种方式。
var obj = {
bob : 14,
jan : 2
}
obj.bob += 12;
console.log(obj);
var obj = {
bob : 14,
jan : 2
}
obj.bob += 12;
console.log(obj.bob)
你可以使用一个ES6功能,Proxy
的
Proxy
对象用于定义基本操作的自定义行为(如财产查找,分配,枚举,函数调用等)。
var obj = { bob: 14, jan: 2 },
p = new Proxy(obj, {
set: function(target, prop, value) {
target[prop] = (target[prop] || 0) + value;
}
});
p.bob = 10;
console.log(p.bob); // 24
p.jane = 42;
console.log(p.jane); // 42
我应该仔细阅读,这正是OP想要的东西xD – Cerbrus
这可以在没有使用setters和getters的代理的情况下完成。 – lonesomeday
简单,而且几乎肯定是正确的,答案是使用addition assignment +=
operator,增加右操作数向左操作数。
obj.bob += 12; //obj.bob is now 26
您可能希望有一个系统,其中设置一个属性与assignment operator =
实际上增加价值的财产的现有价值。这似乎是混乱和不太可能是有益的,但它使用Object.defineProperty
在技术上是可行的:
let _bob = 14;
Object.defineProperty(obj, 'bob', {
set(newValue) {
_bob += Number(newValue);
},
get() {
return _bob;
}
});
obj.bob = 12;
console.log(obj.bob); // logs '26'
我不能相信这是以往任何时候都可能然而,可以预期的行为。
你如何处理新房产? –
@NinaScholz初始值是在问题中的对象字面值中指定的。这反映了这一点。 – lonesomeday
递增当前值..'obj.bob + = 12' – charlietfl
'obj.bob = obj.bob? obj.bob + 12:+ 12' – naortor