2011-08-22 6 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 

それは財産objkeyvalueを割り当てます。 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; 

、コロンの2つの他の用途では、JavaScriptにあります

関連する問題