Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

224
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda