I have been thinking about the implementation of inheritance using closure scope and essentially encapsulating state.
it absolutely can and does. Consider that every module in Node.js (for CJS modules) is actually a function with encapsulated state.
This pattern has been used since the languages inception, over a decade before ES6 classes were introduced.
As a consultant, principal architect and tech lead, over the last 10 years I've driven many successful green field and brown field client projects this way. You'll also find similar patterns in my corpus of open source (see https://github.com/davidmarkclements )
The material would be incomplete without showcasing this pattern.
for more reading on this see