const dataclass = f => function() { Object.entries(f(...arguments)).forEach(([k, v]) => { this[k] = v }) } const F = dataclass((x, y) => ({x, y})) const f = new F(1, 2) console.log(f instanceof F) // "true"