2011-02-01 17 views
12

decir que tengovariable de referencia en el objeto literal?

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

si quiero tener un valor que hace uso del objeto no identificado actual, ¿cómo voy a hacer esto?

por ejemplo, si quería

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

obviamente, esto no funciona.

¿Cuál sería la sintaxis correcta?

Respuesta

4

Desafortunadamente, eso no es posible. Mientras se construye un objeto literal, no existe ninguna referencia externa a ese objeto hasta que se evalúa todo el literal. La única forma de utilizar this en esta etapa es el uso de un constructor en su lugar:

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

myfunc(new MyObject()); 
3

No puede hacerlo en la notación que está utilizando. Un objeto literal no tiene ninguna noción de sí mismo en este contexto.

16

usted podría hacer var3 una función, y decir que es le permitirá utilizar 'esto':

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

alert(x.v3()); 
+3

Exactamente lo que OP quería, creo. – Nathan

+3

El problema es que la sintaxis es diferente x.v1 y x.v3(). – IvanH

-3

me encontré con esto de variables y objetos literales en la web. ¡Espero que esto ayude! click here

+1

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – juliocesar

Cuestiones relacionadas