Supongamos que tengo una función que devuelve un método de un objeto que solo existe en el alcance de la pila:
class Item { constructor(name) { this.name = name } print() { console.log(`Item with name: ${this.name}`); } } function namePrinter(name) { return (new Foo(name)).bar } const printer = namePrinter('Alan') printer() // prints 'Alan' ¿La referencia al método print() evita que la instancia de Foo sea recolectada como basura? Mi suposición es que debajo del azúcar OO de ES6, el método bar() se vincula a la instancia de Foo , lo que hace que almacene una referencia al objeto para que pueda sustituirlo en this , pero no estoy seguro.
Nota al margen: me doy cuenta de que podría hacer que esto funcione con algo como lo siguiente, donde la instancia es parte del cierre de una función anónima, pero eso no funcionaría para mi caso de uso particular:
function newPrinter(name) { const item = new Item(name) return () => { item.print() } }