vuex中的这种操作是什么意思,数组作为函数名?

[types.CHANGE_LAYER_ZINDEX] (state, dir, index) {

...

}
如上,vuex中这是什么操作,将一个数组对象作为函数名么?

阅读 3k
3 个回答

你理解错了,可以参考一下我的代码

const types = {ADD : 'add'}
class MyClass {

  constructor() {
    this.count = 0
  }

  [types.ADD] () {
       console.log(++this.count)
    }
}
let a = new Myclass()
a.add() //1
a[types.ADD] //2

他的意义在于 我 定义好 了一个常量 可以动态调用 该方法
这种写法的好处 在于 降低了错误率,同时也降低了自由度
用 更高的可读性 来替代 更自由的写法
同时 提高了 可读性,一次定义 其他引用此定义,更加规范
类比 java 的接口
比方说 你定义了 PI = 3.14 就可以直接引用了,这时你需要 PI 而不是每次都用3.14
就像上面 只给你了 这个类可操作的 动作,你就不可以再添加 东西了

ps
我把 babel 上面的 代码扒下来了,参考一下

var _createClass = function () { 
    function defineProperties(target, props) { 
        for (var i = 0; i < props.length; i++) { 
            var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || 
            false;
            descriptor.configurable = true; 
            if ("value" in descriptor) 
            descriptor.writable = true; 
            Object.defineProperty(target, descriptor.key, descriptor); 
            } 
        } 
        return function (Constructor, protoProps, staticProps) { 
        if (protoProps) 
        defineProperties(Constructor.prototype, protoProps); 
        if (staticProps) 
            defineProperties(Constructor, staticProps); 
            return Constructor; 
            };
}();

function _classCallCheck(instance, Constructor)
    { 
        if (!(instance instanceof Constructor)) { 
        throw new TypeError("Cannot call a class as a function"); 
    } 
}

var types = { ADD: 'add' };

var MyClass = function () {
  function MyClass() {
    _classCallCheck(this, MyClass);

    this.count = 0;
  }

  _createClass(MyClass, [{
    key: types.ADD,
    value: function value() {
      console.log(++this.count);
    }
  }]);

  return MyClass;
}();

var a = new Myclass();
a.add(); //1
a[types.ADD]; //2
[types.CHANGE_LAYER_ZINDEX]

这是es6里的计算属性,在执行的时候会把这个表达式求值,替换成真正的值调用

ES6中对象新增方法,属性名表达式。

let obj = {
  ['h' + 'ello']() {
    return 'hi';
  }
};

obj.hello()

常量的写法只是一种风格,官方文档也说了,不是必须使用的。

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