2012-10-08 13 views
28

Powiel możliwe:
Access JavaScript Object Literal value in same objectwłaściwości obiektu dostęp obrębie obiektu

Pierwsze spojrzenie na poniższym obiektu JavaScript

var settings = { 
    user:"someuser", 
    password:"password", 
    country:"Country", 
    birthplace:country 
} 

Chcę ustawić birthplace wartość sama jak country, więc ustawiam wartość obiektu country przed birthplace, ale to nie działało dla mnie, użyłem też this.country, ale nadal nie udało mi się. Moje pytanie brzmi: jak uzyskać dostęp do właściwości obiektu w obrębie obiektu.

Niektórzy użytkownicy są uzależnieni, aby zapytać "co chcesz zrobić lub wysłać swój skrypt itp." Odpowiedź dla tych osób jest prosta "Chcę uzyskać dostęp do właściwości obiektu w obiekcie", a skrypt jest wspomniany powyżej.

Każda pomoc będzie mile widziane :)

Pozdrowienia

+0

Jaki jest twój kraj określony? –

+0

Duplikaty: http://stackoverflow.com/questions/4616202/self-references-in-object-literal-declarations, http://stackoverflow.com/questions/8036740/current-object-property-as-value-in -same-object-different-property, http://stackoverflow.com/questions/3173610/can-a-javascript-object-property-refer-to-another-property-of-the-same-object – user123444555621

Odpowiedz

53

Nie można odwoływać się do obiektu podczas inicjalizacji podczas korzystania obiektu dosłownego składni. Musisz odwołać się do obiektu po jego utworzeniu.

settings.birthplace = settings.country; 

Jedynym sposobem, aby odwoływać się do obiektu podczas inicjalizacji jest w przypadku korzystania z funkcji konstruktora.

W tym przykładzie użyto anonimowej funkcji jako konstruktora. Nowy obiekt jest odniesieniem do this.

var settings = new function() { 
    this.user = "someuser"; 
    this.password = "password"; 
    this.country = "Country"; 
    this.birthplace = this.country; 
}; 
1

Nie można uzyskać dostępu do obiektu wewnątrz siebie. Jesteś zmienny:

var country = "country"; 
var settings = { 
    user:"someuser", 
    password:"password", 
    country:country, 
    birthplace:country 
} 
Powiązane problemy