javascript - Javascript 对象字面量的行为(使用变量作为键值)

标签 javascript node.js object

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/

相关文章:

javascript - node.js 的奇怪对象成员行为

javascript - 在 Vue 中,我是否可以更新传递给方法的数据属性,以便它随后更新 UI?

javascript - 类作为对象中的元素

javascript - "recursive"回调会导致堆栈溢出吗?

javascript - 如何在javascript中动态地将带有数组的深层JS对象减少为没有数组的JS对象?

javascript - 对对象属性的图像 onload 调用

javascript - 如何从变量、对象加载 JSON

node.js - React Dev环境创建一个新的Session

javascript - Angular 如何与 Ionic 应用程序中的 Node 一起工作?

javascript - 使用 Jest 监视启动的模块