const magic = (...rest) => { const sum = rest.reduce((acc, current) => acc + current, 0); const inner = (...args) => { return magic(inner.valueOf(), ...args); }; inner.valueOf = () => sum; return inner; }; magic(5, 2, -9).valueOf(); magic(5, 2, -8)(4) + 2;