2011-08-22 49 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:

相關問題