我看过这个问题,我知道如何扩展一个类。但是,使用方法执行此操作是好的做法吗?使用这个安全吗:
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;
使用函数来执行重复的工作,而不是在您需要执行的任何地方重复工作是标准做法。它减少了出错的机会,并集中了操作,以防需要随着时间的推移而增强。在继承关系中挂接构造函数和关联的原型("类")并没有什么特别之处,这使它成为一个例外。
切线相关的旁注:从 ES2015(又名"ES6",2015 年 6 月发布的规范)开始,这种设置这些层次结构的方式已经过时(当然它仍然有效)。ES2015+的方式是class
和extends
。