es6 计算属性

var obj = {
    [name]()=>{
        
    }
}

es6的计算属性是为了解决什么问题而设计的这个新特性的?

阅读 7k
5 个回答

我知道 可以声明 一个变量 然后给对象当做属性使用

var name= 'nickName'
var obj = {
    [name]:'王麻子'
}

请问这样格式的数组怎么转为对象?

["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, {       
    })
})

不然你怎么给属性设置变量?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题