Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

219
Vistas
Actualizar variables de referencia

Solo me preguntaba si es posible actualizar las variables de referencia de objetos si la variable es una cadena. Funciona, si asigno todo el objeto, pero no funciona con la cadena. También podría asignar todo el objeto, pero el problema aquí es que no necesito un objeto, pero necesito una cadena, ya que es una variable global del servicio Angular 2.

https://jsfiddle.net/009kqqrt/

 obj = { var: 'initial' }; a = [{ test: 'old', new: 'no' }, { test: obj.var, new: 'yes' }]; o = { test: obj.var, new: 'yes' }; obj.var = 'objModified'; alert(o.test); // Changes correctly obj.var = 'arrModified'; alert(a[1].test);

Aquí está el jsfiddle.

El resultado esperado sería -

primera alerta - 'objModified' segunda alerta - 'arrModified'

En mi caso, obtengo siempre 'inicial'.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Creo que lo que quieres hacer es pasar la referencia del objeto.

 var obj = { var: 'initial' }; var a = [{ test: 'old', new: 'no' }, { test: obj, new: 'yes' }]; var o = { test: obj, new: 'yes' }; obj.var = 'objModified'; alert(o.test.var); // Changes correctly obj.var = 'arrModified'; alert(o.test.var);

Violín actualizado: https://jsfiddle.net/echonax/009kqqrt/2/

Si pasa la referencia de cadena como, test: obj.var ya que las cadenas son inmutables, no cambiará.

over 4 years ago · Santiago Trujillo Denunciar

0

La forma en que lo escribió a y o los objetos hacen referencia al valor de obj.var en el momento en que se crean.

Cualquier cambio en ese valor después de que se creen no se propagará a a y o .

Si desea que funcione de esa manera, deberá hacer que la propiedad de prueba haga referencia a un objeto en lugar de hacer referencia al valor directamente.

 obj = { var: 'initial' }; a = [{ test: 'old', new: 'no' }, { test: obj, new: 'yes' }]; o = { test: obj, new: 'yes' }; obj.var = 'objModified'; alert(o.test.var); // o.test=== obj is true obj.var = 'arrModified'; alert(a[1].test.var); // a[1].test=== obj is true
over 4 years ago · Santiago Trujillo Denunciar

0

Cuando crea la matriz a y el objeto o , la test de propiedades se inicializa con el valor de una variable de cadena simple, por lo que sus valores se almacenan "como valor".

 obj = { var: 'initial' }; a = [{ test: 'old', new: 'no' }, { test: obj.var, new: 'yes' }]; o = { test: obj.var, new: 'yes' };

Si inicializa eso con una referencia de objeto, como el siguiente ejemplo:

 var obj = { var: 'initial' }; a = [{ test: 'old', new: 'no' }, { test: obj, new: 'yes' }]; o = { test: obj, new: 'yes' }; obj.var = 'objModified'; console.log(o.test.var); obj.var = 'arrModified'; console.log(a[1].test.var);

Puede ver que su valor se modificará cuando se modifique el objeto al que se hace referencia, eso se debe a que su valor se almacena por referencia.

Espero haber sido claro, adiós.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda