使用方法扩展 class 是一种好习惯吗?

Is it good practice to extend a class by using a method?

我看过 this 问题,我知道如何扩展 class。但是,用一种方法来做到这一点是好的做法吗?使用这个安全吗:

function extendClass(child, parent) {
    child.prototype = Object.create(parent.prototype);
    child.constructor = child;
}

extendClass(Banana, Fruit);

而不是这个:

Banana.prototype = Object.create(Fruit.prototype);
Banana.prototype.constructor = Banana;

使用函数来执行重复的工作而不是在需要的地方重复工作是标准做法。它可以减少出错的机会,并集中操作以防需要随着时间的推移而增强。在继承关系中挂接构造函数和关联原型 ("classes") 并没有什么特别之处,因此它是一个例外。


Tangentially-related 旁注:从 ES2015(又名 "ES6",2015 年 6 月发布的规范)开始,这种设置这些层次结构的方式已经过时(当然它仍然有效)。 ES2015+ 方式是 classextends.