しかも、>>607の要件だとしても、本質は変わらないと思う

let i = 4;
while (i--) obj = obj.a();

for (let i = 0; i < 4; i++) obj = obj.a();

for (let v of [4,3,2,1]) obj = obj.a();

[4,3,2,1].reduce(obj => obj.a(), obj);