JavaScript oferuje wiele sposobów deklarowania obiektów. Gdy masz większość dostępnych danych pod ręką, najwygodniejszy (moim zdaniem) jest następujący:Składnia deklaracji obiektu JavaScript - nazwy zmiennych jako właściwości
var person = {
name: 'John',
age: 23
}; // "object literal syntax"
Ciekawa rzecz o tej składni jest to, że jest on identyczny do tego:
var person = {
'name': 'John',
'age': 23
}; // "object literal syntax"
Oznacza to, że możesz użyć cudzysłowów lub pominąć je dla nazw właściwości.
Porównując to do sposobu ustawiania pojedynczych dzieł własności, masz dwie opcje:
person.birthday = "January 12"; // "dot syntax"
lub
person['birthday'] = "January 12"; // "array syntax"
W „kropka składni” działa tylko wtedy, gdy prawy operand jest rzeczywista Nazwa właściwości. Jeśli chcesz użyć zmiennej dla nazwy właściwości, trzeba użyć „array składni”, a mianowicie:
var prop = "birthday";
person[prop] = "January 12";
Teraz możliwe jest użycie zmiennej dla nazwy właściwości w „object składni dosłowne” ? Ponieważ nie ma znaczenia, jeśli podajesz nazwy właściwości, nie wydaje się oczywistym sposobem użycia zmiennej. Czekam na coś takiego:
var prop = "birthday";
var person = {
name: 'John',
age: 23,
(prop): 'January 12'
};
Tutaj używam (prop) jako wyimaginowanego składni, aby wyrazić, że jest to zmienna, a nie ciągiem znaków.
Dzięki.
myślę, że trzeba trzymać się składni tablicy .. może eval (+ prop +”=„12 stycznia "") wystarczy, ale nie sądzę, aby było to optymalne rozwiązanie. –
@PhilippeBoissonneault - Ack! Eval jest * nie * potrzebny ... proszę nie używać go w tym kontekście. –
Szukasz odpowiednika zmiennych zmiennych PHP: '$ foo = bar; $ bar = '123'; echo $$ foo; // faktycznie wyświetla '123'' – Ray