Recientemente me di cuenta de que no hay diferencia entre estos dos fragmentos.
function step() { if (!this.counter) this.counter = 0; return this.counter++; } console.log(step()); // -> 0 console.log(step()); // -> 1 console.log(step()); // -> 2 function step() { if (!this.counter) this.counter = 0; return this.counter++; } step.counter = 10; console.log(step()); // -> 0 console.log(step()); // -> 1 console.log(step()); // -> 2 ¿Por qué establecer una propiedad de función no afecta this ?