Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

119
Vistas
Is this possible to design a function which takes a parameter and returns an object which holds multiple properties or functions

For example:

var resultList = [];
var objectName = (userName) => {

};

objectName.rowCount; // return overall count
objectName.fetchNext(); // updated data will be available in resultList

I have tried multiple solutions with no result like

var resultList = [];
var objectName = (userName) => {
  var rowCount = 0;
  init() {
    // make call to server and read data
    rowCount = 5; // setting dummy data
  };

  fetchNext = function(){
       // logic here
       resultList = [] // new data
  };

  
  init();
};

EDIT

Another attempt

var x = function(){
    var a = function(){console.log('a');};
    var b = function(){console.log('b');};
    return {a: a, b: b};
}
x.a(); // not able to call this function
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

You can't use an arrow function as a constructor, so tyou could change your code to use a traditional function:

function objectName(userName)  {
  var rowCount = 0;
  init = function() {
    // make call to server and read data
    rowCount = 5; // setting dummy data
  };

  this.fetchNext = function(){
       // logic here
       const resultList = [] // new data
       return resultList;
  };

  
  init();
};

var myObj = new objectName("foo");
console.log(myObj.fetchNext());

Or, you can return an object from your arrow function

var objectName = (userName) => {
  var rowCount = 0;
  function init() {
    // make call to server and read data
    rowCount = 5; // setting dummy data
  };

  
  
  init();
  
  return {
    fetchNext: function(){
       // logic here
       const resultList = [] // new data
       return resultList;
    }

  }
};

var myObj = objectName("Foo");
console.log(myObj.fetchNext());

Related:

  • Are 'Arrow Functions' and 'Functions' equivalent / interchangeable?

For completeness, the reason your edit did not work is that you defined x but never executed the function. This works:

var x = function(){
    var a = function(){console.log('a');};
    var b = function(){console.log('b');};
    return {a: a, b: b};
}
x().a(); // must execute x to get the result

And is esssentially the same as my second example above

about 4 years ago · Juan Pablo Isaza Denunciar

0

In addition to the other answer, if you want to use an arrow function you can use it like this by wrapping the object in paranthesis:

const objectName = (userName) => ({
  rowCount: 0,
  resultList: [],
  init() {
    this.rowCount = 5;
  },
  fetchNext() {
    // fetch results
    this.resultList = [1, 2, 3, 4];
  }
});

const results = objectName('kyroath');
console.log('before init():', results.rowCount); // 0
results.init()
console.log('after init():', results.rowCount); // 5
console.log('before fetchNext():', results.resultList); // []
results.fetchNext()
console.log('after fetchNext():', results.resultList); // [1, 2, 3, 4]

about 4 years ago · Juan Pablo Isaza Denunciar

0

Are you just looking for a Class?

class Obj {
    constructor() {
        this.rowCount = 0;
        this.resultList = [];
    }

    init() {
        // make call to server and read data
        this.rowCount = 5; // setting dummy data
    }

    fetchNext() {
        // logic here
        this.resultList.push(1); // new data
        return this.resultList;
    }
}

const obj = new Obj("userName");
obj.init();
const row = obj.rowCount;
const res = obj.fetchNext();

console.log(row);
console.log(res);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda