Tengo este código simple:
function fetch(callback) { const data = [1, 2, 3];//from query to server callback(data); callback.prototype.log.call(); // PROBLEM HERE. I want to log the fetchCallback instance data array from here } function fetchCallback() { this.data = [] } fetchCallback.prototype.store = function(data) { data.forEach(el => this.data.push(el)); console.log(this.data); //here the log works because of the instance binding } fetchCallback.prototype.log = function() { console.log(this.data); } const mycallback = new fetchCallback(); fetch(mycallback.store.bind(mycallback)); En function fetch(callback) {...} quiero poder acceder a la instancia del titular de la devolución de llamada, que es mycallback para registrar this.data de esa instancia. Probé callback.prototype.log.call(); , callback.log(); , y algunos otros, pero me falta algo con respecto al tema de alcance/contexto.
Editar:
Esto parece funcionar si se pasa toda la instancia:
function fetch(callback) { const data = [1, 2, 3];//from query to server callback.store(data); callback.log(); } const mycallback = new fetchCallback(); //fetch(mycallback.store.bind(mycallback)); fetch(mycallback);Edit2: funciones de retención y almacenamiento de datos separadas
function fetch(callback, dataHolder) { const data = [1, 2, 3];//from query to server callback(data, dataHolder); log(dataHolder.data); } function dataHolder() { this.data = [] } function store(data, holder) { data.forEach(el => holder.data.push(el)); //console.log(this.data); } function log(data) { console.log(data); } const myDataHolder = new dataHolder(); //fetch(mycallback.store.bind(mycallback)); fetch(store, myDataHolder);