function proxy(data) {
if (!data) data = [];
return new Proxy(() => 0, {
get(t, k) {
let r = [].concat(data);
r.push(k);
return proxy(r);
},
apply(t, k, args) {
return `${data.join('.')}(${args.join(',')})`
}
});
}
console.log(proxy().a.b.c(1, 2));