This has some eerie similarities to [Backbone.js](https://backbonejs.org/#View-extend). That's not necessarily a bad thing, because Backbone was doing its level best to compete as a framework in its heyday, but it's still interesting to see how different it would be if Backbone was designed today.