2011-02-01 19 views
12

dire che hovariabile di riferimento in oggetto letterale?

myfunc({ 
    var1: 1, 
    var2: 2, 
}) 

Se voglio avere un valore che fa uso dell'oggetto senza nome corrente, come farei questo?

ad esempio se volevo

myfunc({ 
    var1: 1, 
    var2: 2, 
    var3: this.var1 + this.var2 
}) 

ovviamente questo non funziona.

Quale sarebbe la sintassi corretta?

risposta

4

Sfortunatamente, ciò non è possibile. Mentre viene costruito un oggetto letterale, non esiste alcun riferimento esterno a quell'oggetto finché non viene valutato l'intero valore letterale. L'unico modo per utilizzare this in questa fase è quello di utilizzare un costruttore, invece:

function MyObject() { 
    this.var1 = 1; 
    this.var2 = 2; 
    this.var3 = this.var1 + this.var2; 
} 

myfunc(new MyObject()); 
3

Non puoi farlo nella notazione che si sta utilizzando. Un oggetto letterale non ha alcuna nozione di sé in questo contesto.

16

si potrebbe fare var3 una funzione, e chiamandolo vi permetterà di utilizzare 'questo':

x= { 
    v1:4, 
    v2:5, 
    v3:function(){return this.v1 + this.v2;} 
}; 

alert(x.v3()); 
+3

Esattamente ciò che l'OP voleva che io pensassi. – Nathan

+3

Il problema è che la sintassi è diversa x.v1 e x.v3(). – IvanH

-3

ho trovato questo sulle variabili e letterali oggetto sul web. Spero che aiuti! click here

+1

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. – juliocesar

Problemi correlati