javascript - es6中的[]()是怎样的用法

查看:83
本文介绍了javascript - es6中的[]()是怎样的用法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

看别人的代码时候,无意间看到[](){}这样的用法,但阅尽百度都没看到这个方法的详解,所以想咨询一下大家。
具体是在vuex里的store.js看到

[changeListStatus](state,bool){ state.isAllList = bool; }

const mutations = {  
    [changeListStatus](state,bool){  
        state.isAllList = bool;  
    },  
    [addNote](state) {  
        const newNote = {  
            text: 'New note',  
            favorite: !state.isAllList,  
            _rm: Math.random(),  
        }  
        state.notes.push(newNote);  
        state.activeNote = newNote;  
    },  
    [editNote](state, text) {  
        state.activeNote.text = text;  
    },  
    [deleteNote](state){  
        let rm = state.activeNote['_rm'];  
        let index = state.notes.findIndex(function(v,i){  
            if( rm == v['_rm'] ) return true;  
            return false;  
        });  
        if(index >= 0) state.notes.splice(index, 1);  
        state.activeNote = state.notes[0] || {};  
    },  
    [toggleFavorite](state){  
        state.activeNote['favorite'] = !state.activeNote['favorite']  
    },  
    [setActiveNote](state,note){  
        state.activeNote = note;  
    },  
}  

解决方案

问题分解

var changeListStatus='foo';
var obj={
    [changeListStatus](state,bool){ state.isAllList = bool; }
}

=>

var changeListStatus='foo';
var obj={
    [changeListStatus]:function(state,bool){ state.isAllList = bool; }
}

=>

var obj={
    foo:function(state,bool){ state.isAllList = bool; }
}

[]表示属性内是可计算的,常见的是比如 给对象安装迭代器

var obj={}
obj[Symbol.iterator]=function(){}

这篇关于javascript - es6中的[]()是怎样的用法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆