var obj = {
bob : 14
jan : 2
}
如果我添加到此对象,例如obj.bob =“12”, 有没有办法添加这个来制作bob:26而不是用bob替换它:12? 谢谢。
答案 0 :(得分:4)
您可以使用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

答案 1 :(得分:1)
所以,你这样使用。
if(update.Message.Chat.Username == "xxxx" || update.Message.Chat.Username == "yyyy")
{
var req = new SendMessage(ChID, text) { ParseMode = SendMessage.ParseModeEnum.HTML, DisableWebPagePreview = true };
await bot.MakeRequestAsync(req);
var req2 = new SendMessage(update.Message.Chat.Id, "✅Your post was sent successfully.✅");
await bot.MakeRequestAsync(req2);
continue;
}
答案 2 :(得分:1)
var obj = {
bob : 14,
jan : 2
}
obj.bob += 12;
console.log(obj.bob)

答案 3 :(得分:0)
简单且几乎肯定正确的答案是使用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'
然而,我无法相信这可能是期望的行为。