2012-10-08 3 views
28

Eventuali duplicati:
Access JavaScript Object Literal value in same objectproprietà degli oggetti di accesso entro oggetto

Primo sguardo al seguente oggetto JavaScript

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

voglio impostare birthplace valore stesso di country, così ho messo il valore dell'oggetto country di fronte a birthplace ma non ha funzionato per me, ho anche usato this.country ma ancora fallito. La mia domanda è come accedere alla proprietà dell'oggetto all'interno dell'oggetto.

Alcuni utenti sono dipendenti dal chiedere "cosa vuoi fare o inviare il tuo script ecc." La risposta per questi ppl è semplice "Voglio accedere alla proprietà dell'oggetto all'interno dell'oggetto" e lo script è menzionato sopra.

Qualsiasi aiuto sarà apprezzato :)

saluti

+0

Come viene definito il tuo paese var? –

+0

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

risposta

53

Non è possibile fare riferimento a un oggetto durante l'inizializzazione quando si utilizza oggetto letterale sintassi. È necessario fare riferimento all'oggetto dopo che è stato creato.

settings.birthplace = settings.country; 

solo modo per fare riferimento a un oggetto durante l'inizializzazione è quando si utilizza una funzione di costruzione.

Questo esempio utilizza una funzione anonima come costruttore. Il nuovo oggetto è riferimento a this.

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

Non è possibile accedere all'oggetto all'interno di se stesso. Sei variabile:

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