var obj = {
[name]()=>{
}
}
es6的计算属性是为了解决什么问题而设计的这个新特性的?
请问这样格式的数组怎么转为对象?
["38:21","33:12","11:22"]
想把它转为下面这种结构的对象
{
38:21,
33:12,
11:22
}
答案,用到了计算属性,默认情况下变量没法直接作为对象的属性名。
给它加个[]
符号就能被解析为变量对应的值,下面的解决方案中,kv[0]是个变量,在构建对象时,外层加了中括号(即计算属性)被正确解析为了这个变量对应的值。
["38:21","33:12","11:22"].map(o=>{
let kv = o.split(":");
return {[kv[0]]:kv[1]}
})
当你需要用常量来定义这个的属性的时候,这种写法会比较方便
constants.js
export const TEST = 'TEST'
index.js
import { TEST } from 'contants.js'
var obj = {
[TEST]:'王麻子'
}
很灵活,比如可以代理,很多mvvm框架,比如Vue 的源码就用到了
Object.keys(app.data).forEach(prop=>{
//这里
app.data[prop] = Object.defineProperty(app.data, prop, {
})
})
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答928 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
我知道 可以声明 一个变量 然后给对象当做属性使用