在一些国外的项目中,我看到使用了这种写法
export default {
UPDATE_LAYOUT_SECTIONS: 'UPDATE_LAYOUT_SECTIONS',
}
import types from './mutation-types'
export default {
[types.UPDATE_LAYOUT_SECTIONS] (state, load) {
state.layoutSections = load
},
}
这种写法完全不懂什么意思,后面终于搜到一篇文章,学习到了。记录一下。
该写法和下面相同:
export default {
UPDATE_LAYOUT_SECTIONS (state, load) {
state.layoutSections = load
},
}
实际上,这就是方法名,只是有了一个可以集中方法名的js文件,在外层方法调用。
不过该特性必须在对象内使用,export是 向外暴露的成员,也就是一个对象了。我们可以看看这段代码,参照自:https://blog.csdn.net/weixin_43343144/article/details/85928309
//ES6中的 函数名也支持表达式运算!
let aa = "method";
let bb = "Test";
let Person = class {
constructor(name,age){
this.name = name;
this.age = age;
}
[aa+bb]() {
console.log( `名字为:${this.name}`);
}
[aa]() {
console.log( `名字为:${this.name}`);
}
}
let person = new Person("kirin",18)
person[aa] === person.method && console.log("true");
person[aa+bb] === person.methodTest && console.log("true");
console.log([aa+bb]) //输出结果为:数组:["methodTest"]