在学习Redux的时候,遇到这样一个对象(下面代码中函数的第二个参数)
1 2 3 4 5 6 |
export const todos = createReducer([], { [ActionTypes.ADD_TODO](state, action) { let text = action.text.trim(); return [...state, text]; } }); |
提炼出来,形式为{[](){}},看上去不太好理解
这里用到了ES6的两个知识点
1.属性简写
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
let obj = { test(){ console.log("is right!"); } }; // 等同于 var obj = { test: function(){ console.log("is right!"); } }; |
2.表达式作属性名
1 2 3 4 5 |
let obj = { [key]: value } //这里的key可以由表达式组成,用方括号包裹 |
总结如下:
1 2 3 |
var obj={"name":"test"}; var handler={[obj.name](){console.log("is right!")}}; handler[obj.name](); // "is right!" |