Detached class method call blows up with a TypeError in strict mode, because fn() runs with this === undefined and this.n += 1 tries to touch undefined.n.
c.inc() would log 2; if you want fn() to work, do const fn = c.inc.bind(c) or const fn = () => c.inc().
Ripping c.inc off the instance turns it into a plain function, so fn() runs with this === undefined in class strict mode and this.n += 1 throws a TypeError.
Yep, once you detach c. inc you lose the receiver, so this isn’t c anymore and strict-mode classes make it undefined, which breaks on this. n += 1. If you need a reusable callback, const fn = c. inc. bind(c) is the cleanest fix.