function addName(obj, name, value) {
return {...obj, name: value}
}
addName({}, "Brutus", 300)
当使用变量作为键创建对象文字时,为什么该变量没有被使用?相反,当返回对象时,它只返回“name:300”而不是“Brutus:300”。我只是对这种行为感兴趣,我知道正确的方法是单独创建一个对象,然后使用值 (obj[name] = value
) 创建键。
最佳答案
这只是 Javascript 语法...当 initializing an object即使存在同名的变量,键名称也会按字面意思获取。
如果您想保留该语法,您可能会对计算属性名称感兴趣(请参阅上面链接的文章的“ECMAScript 2015 中的新符号”)。
return {...obj, [name]: value}
我认为值得指出的是,此语法创建了一个新对象,该对象从旧对象复制键/值对。如果您的程序依赖于 obj
作为存储变量的 ==
或 ===
,那么这可能很重要,也可能不重要。
如果您想保留相同的对象并简单地添加新属性,您始终可以直接添加它。
obj[name] = value;
return obj;
关于javascript - Javascript 对象字面量的行为(使用变量作为键值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64311406/