2011-08-22 12 views
14

Prawdopodobnie jest to głupie pytanie noobem ale co robi: reprezentują w następującym kontekście:Co oznacza dwukropek (:) w 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'](); 
} 

Czy przechowywania funkcję do każdej z tych zmiennych?

Odpowiedz

30

To object literal[MDN]:

var obj = { 
    key: value 
}; 

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

Przypisuje value do nieruchomości key z obj. Chociaż nie ma ograniczeń co do tego, czym może być value (cóż, musi to być coś, co można przypisać), istnieją ograniczenia dla key: Musi to być albo identifier name, literał łańcuchowy albo literał liczbowy.

Więcej szczegółów można znaleźć w section 11.1.5 specyfikacji ECMAScript.

dosłowny zapis jest podobny do:

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

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

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

Największą różnicą jest to, że podczas korzystania z obiektem dosłowny, nie można uzyskać dostęp do innych właściwości obiektu podczas deklaracji.

To nie zadziała:

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

podczas gdy to robi:

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

Dla kompletności, w JavaScript istnieją dwa inne zastosowania dwukropkami:

Powiązane problemy