Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

225
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!