The pattern didn't break subclassing there, your code did by not continuing the pattern and then not using new :)
Personally, I only use this pattern for cases where it's more convenient not to have to use new (e.g. building declarative APIs for defining things) and let 'use strict'; catch the rest.