在 JavaScript 中,当我想从“类”继承属性时,我会这样写:
Car.prototype = new Vehicle();
为什么我要在这里分配车辆实例?
为什么我们不写成 Car.prototype = Vehicle;
或 Car.prototype = Vehicle.prototype;
呢?为什么要从实例复制?
最佳答案
首先,你真的应该这样做
Car.prototype = Object.create(Vehicle.prototype);
其中涉及原因,但足以说明这是为您的 Car
原型(prototype)获取新对象并确保它继承自 Vehicle
原型(prototype)的更好方法。
现在,您想要为 Car
原型(prototype)创建一个新对象的原因是,如果您不厌其烦地创建一个子类,那么您'您可能需要适用于子类但不适用于更通用的父类的特殊行为。您需要一个新对象来存储这些新属性;否则,您需要将这些行为属性添加到 Vehicle
原型(prototype)中,并且所有车辆都可以访问。
最后,将 Car.prototype
设置为 Vehicle
没有多大意义。这会起作用,因为它不会导致异常,但会将Car
原型(prototype)设置为Vehicle
构造函数本身。
关于JavaScript继承: why copy from an instance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36746966/