官方解释:Map对象就是简单的键/值映射.其中键和值可以是任意值(原始值或对象值).

简单应用如下:

如实现color与status的一一对应

var status_map = {
        'null': 'unbegin',
        'yellow': 'beginning',
        'lightgray': 'end'
    };
var color='yellow';
var status = status_map[color];
status

得到status的值为'beginning';


也可以这样:

var status_map = {
        'null': function () {
            return 'unbegin'
        },
        'yellow': function () {
            return 'beginning'
        },
        'lightgray': function () {
            return 'end'
        }
    }
var color='yellow';
var status = status_map[color]();//注意区别,试想一下不加后面的括号结果会怎样
status

也可以得到status的值为'beginning';


如此以来,再联想一下,这样的结构是不是与switch函数有些像

function color_to_status(color) {
    switch (color) {
        case 'null':
            return 'unbegin';
            break;
        case 'yellow':
            return 'beginning';
            break;
        case 'lightgray':
            return 'end';
            break;
        default :
            break;
    }
}
var color='yellow';
var status = status_to_color(color);


这样函数中的switch函数便可用map对象来代替

关于switch与map对象的性能比较可参看http://agilejava.blogbus.com/logs/39858996.html

参考链接https://developer.mozilla.org/zh-CN/docs/JavaScript/Reference/Global_Objects/Map