// Case A
function Constructor() {
this.foo = function() {
...
};
...
}
// vs
// Case B
function Constructor() {
...
};
Constructor.prototype.foo = function() {
...
}
Una de las principales razones por las que aconsejan el uso de prototipos es que .foo
se crea una vez en el caso del prototipo donde como this.foo
se crea varias veces cuando se utiliza el otro enfoque.lo hace la creación de funciones consumen más memoria
Sin embargo, uno esperaría que los intérpretes puedan optimizar esto. De modo que solo hay una copia de la función foo
en el caso A.
Por supuesto, usted todavía tendría un contexto de alcance único para cada objeto debido a cierres pero que tiene menos sobrecarga que una nueva función para cada objeto.
¿Los intérpretes JS modernos optimizan el Caso A por lo que solo hay una copia de la función foo
?
Podemos tener algunas referencias que definen "mejor" y "intérpretes modernos" – Raynos
Sus pruebas coinciden con lo que encontré en la mía también --- También agregué algunos bloques de código grandes dentro de la función para probar si eso hizo que el globo de memoria es más rápido, y no ... El código dentro de la función no requiere memoria extra. – gnarf
Ah, y también desconecté el uso de la memoria antes y después de la prueba para medir el diff antes de que se crearan los objetos – gnarf