JavaScript继承: why copy from an instance?

标签 javascript inheritance prototype

在 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/

相关文章:

javascript - jQuery UI 布局和约束对话框到中央面板

c# - 在 C# 4 中,如何在具有重载构造函数的父类的子类中拥有带可选参数的构造函数?

javascript - 使用命名空间将原型(prototype)对象分配给对象中的匿名函数,这是未定义的?

Javascript:对象中的范围问题

javascript - 解析使用每个循环创建的 json 对象

javascript - 如何在 Windows 上安装 n?

javascript - 奇怪的 JavaScript 排序错误

c++ - 观察者设计模式接口(interface)契约设计问题

java - 每个扩展类的静态变量

prototype - 如何在 Visio 图表中实现手绘外观?