2011-08-22 139 views
14

这可能是一个愚蠢的noob问题,但什么是:在以下方面表示:JavaScript中的冒号(:)代表什么?

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'](); 
} 

是它存储的功能,每一个这些变量的?

回答

30

这是一个object literal[MDN]

var obj = { 
    key: value 
}; 

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

它指定value到属性的objkey。尽管对于什么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: