JavaScript中的冒号(:)表示什么?

时间:2011-08-22 12:13:03

标签: javascript

这可能是一个愚蠢的noob问题,但是:在以下背景中代表什么:

var stuffToDo = {
    'bar' : function() {
        alert('the value was bar -- yay!');
    },

    'baz' : function() {
        alert('boo baz :(');
    },

    'default' : function() {
        alert('everything else is just ok');
    }
};

if (stuffToDo[foo]) {
    stuffToDo[foo]();
} else {
    stuffToDo['default']();
}

是否将函数存储到每个变量中?

2 个答案:

答案 0 :(得分:35)

这是object literal [MDN]

var obj = {
    key: value
};

// obj.key === value; // true

它将value分配给key的媒体obj。虽然对value可以是什么没有限制(好吧,它必须是可分配的东西),但key有一些限制:它必须是identifier name,字符串文字或者数字文字。

可以在ECMAScript规范的section 11.1.5中找到更多详细信息。

字面符号类似于:

var stuffToDo = {}; // <-- empty object literal

stuffToDo.bar = function() {...};
// or stuffToDo['bar'] = ...

stuffToDo.baz = function() {...};
// or stuffToDo['baz'] = ...

最大的区别在于,在使用对象文字时,您无法在声明期间访问对象的其他属性。

这不起作用:

var obj = {
    foo: value,
    bar: obj.foo
};

然而这样做:

var obj = {};
obj.foo = value;
obj.bar = obj.foo;

为了完整起见,JavaScript中还有两种冒号用法:

答案 1 :(得分:4)