Por ejemplo, si tengo una clase ImageBlock y luego esa clase tiene un método complejo modifyImage() ...
class ImageBlock { /* ... */ modifyImage() { // A 40+ line code, complex code } /* ... */ } Cuando creo una nueva instancia de ImageBlock , ¿también se creará una instancia de modifyImage() ? como otra función?
No quiero tener dos instancias de un método complejo, ya que fue un desperdicio de memoria. Conozco otra alternativa para esto, pero no pido una solución alternativa a esto, lo siento.
como otra función?
No, será exactamente la misma función.
class ImageBlock { /* ... */ modifyImage() { // A 40+ line code, complex code } /* ... */ } const i1 = new ImageBlock(); const i2 = new ImageBlock(); console.log( i1.modifyImage === i2.modifyImage );Los métodos definidos dentro de una clase se colocan en el objeto prototipo, una vez , y luego cada instancia tiene un prototipo interno de ese objeto prototipo.
Dicho esto, incluso si se creó de nuevo cada vez (como con una función de flecha de campo de clase para preservar la referencia a this interior, lo cual es razonablemente común) -
como si fuera un desperdicio de memoria.
Un código de más de 40 líneas
no habría absolutamente nada de qué preocuparse en el 99,9% de las situaciones. Las computadoras de la última década pueden ejecutar muchos miles de líneas en un abrir y cerrar de ojos, y simplemente crear una función sin llamarla es mucho más fácil que eso.