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

20

这可能是一个愚蠢的新手问题,但在以下上下文中“:”代表什么意思:

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个回答

38

这是一个对象字面量[MDN]

var obj = {
    key: value
};

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

它将value分配给obj的属性key。虽然value可以是任何可分配的内容,但对于key有限制:它必须是标识符名称, 字符串文字或数字文字之一。
更多细节可以在ECMAScript规范的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中还有另外两种使用冒号的方式:


那个 ECMAscript 的链接已经过时了 :\ - Džuris

4

链接已损坏 :) - Kick Buttowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接