关于es6语法问题。

import * as types from './mutation-types'
const mutations={
      [types.num]//mutation-types取/mutation-types里的值,为什么需要用[],直接types.num不可以吗?
    }
阅读 2.5k
5 个回答

这属于 es6 里的 属性名表达式

当对象的属性名保存在一个变量中,或者需要计算时,在 es5 规范下,使用变量名是无法定义属性的。
但在 es6 中,通过中括号的方式,可以实现这一操作。

例如:

let nameProp = 'name';

let obj = {
  [nameProp]: 'Kobe Bryant',
  ['spirit' + 'Prop']: 'Mamba Out'
};

console.log(obj.nameProp)        //打印 'undefined',因为计算后的 key 是'name'
console.log(obj.name)            //打印 'Kobe Bryant'
console.log(obj.spiritProp)      //打印 'Mamba Out',计算了字符串相加

types.num应该是个变量吧,所以需要[]起来。

举个例子:
假如有个变量: let name = 'test'
另外有个对象a要获取变量name的内容,并且要把其内容作为其属性名。
我们知道对对象赋值可以通过'.'预算符,如a.age = 1
但是要实现上面这个需求用'.'运算符就无法实现,因为变量name的值是不可预知,
所以就需要[]运算符,则: a[name] = 'test2'
clipboard.png
同理:types.num是个变量,我们要去它的值所为对象属性名,所以需要加括号

这个是数组的展开运算,类似于对象的...obj

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