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

249
Visualizações
Texto mecanografiado (Angular2): Pasar objetos a funciones -> ¿posibles pérdidas de memoria?

He leído que al pasar objetos como parámetros en javascript (también heredado en Typescript) se pasa por referencia.

¿Podría eso causar pérdidas de memoria?

Supongamos un escenario donde:

  1. El siguiente componente ejecuta la función saveCustomerInfo
  2. Luego, la función empuja el objeto en una matriz.
  3. El componente se destruye.

 @Component({ selector: "customer-details", templateUrl: "../html/customerDetails.template.html" }) export class CustomerDetailsComponent { customerData: Customer; constructor(private customerService: CustomerService): void {} saveCustomerInfo(): void { this.customerService.saveCustomer(this.customerData); } }

¿Eso no causaría una pérdida de memoria, ya que el servicio ahora tiene una referencia guardada del atributo de un Componente que no permite que el Componente sea recolectado como basura?

En cualquier caso, ¿cuál es la mejor práctica en este tipo de llamadas? ¿Deberíamos pasar solo objetos temporales declarados dentro de las funciones a través de "let" o pasar clones creados por Object.create ()?

Muchas gracias por adelantado,

dimitris

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

@Component({ selector: "customer-details", templateUrl: "../html/customerDetails.template.html" }) export class CustomerDetailsComponent { customerData: Customer; constructor(private customerService: CustomerService): void {} saveCustomerInfo(): void { this.customerService.saveCustomer(this.customerData); } }

En su código de ejemplo, según lo que describió en el resto de su pregunta, asumo que la llamada customerService.saveCustomer(customerData) termina colocando su parámetro (customerData) en una matriz interna.

Esto significa correctamente que el objeto customerData no será recolectado como basura porque ahora su objeto customerService tiene una referencia a él. Sin embargo, aunque el objeto customerData no se puede recolectar como basura, el resto de CustomerDetailsComponent se puede recolectar como basura sin ningún problema; el hecho de que otra persona tenga una referencia a una de sus propiedades internas significa que esa propiedad específica no se marcará para recolección de basura, pero el resto del objeto todavía está listo para la recolección de basura (suponiendo que nadie más tenga una referencia al componente en sí).

over 4 years ago · Santiago Trujillo Relatório

0

"Cuando Angular ve que un componente ya no es necesario en el DOM, lo destruirá".

Básicamente, cuando el componente no es necesario, se llama a ngDestroy().

En este caso, puede probar para ver si el componente se destruye implementando el enlace del ciclo de vida en el componente, haciendo la llamada como lo hizo anteriormente y luego moviéndose a una nueva vista donde el componente no está en el DOM.

El componente debe ser destruido muy bien.

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