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

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

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 Report

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 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!