TLDR: If this is used without super (which should be statically analyzable), let it refer to Object.create(new.target.prototype). Otherwise, let super creates what it refers to. I know the reason to force super in derived class's constructor is to make sure this refers to the exotic object the base class might allocate. But I bet in real world, extending base classes who only create ordinary objec