JavaScript 中的继承:为什么不使用 Child.prototype = Parent.prototype?
在 JavaScript 中,可以通过委托来实现继承,使用Child.prototype = new Parent();将子原型链接到父原型的新实例。但是,设置 Child.prototype = Parent.prototype 会产生意外行为。
此赋值将 Child.prototype 的 proto 属性设置为 Parent.prototype。这意味着对 Child.prototype 或 Parent.prototype 所做的任何更改都会影响另一个对象的原型。这种行为是有问题的,因为它破坏了单独对象层次结构的封装和独立性。
在提供的示例中,在 Spaceship 构造函数中分配 this.hitBox.width 和 this.hitBox.height 会导致不同的结果,具体取决于继承方法。当使用 Spaceship.prototype = new GameObject(); 时,Spaceship 的 this.proto 属性被设置为 GameObject,而当使用 Spaceship.prototype = GameObject.prototype 时,this.proto 被设置为 Spaceship。
相反这些方法中,使用 Spaceship.prototype = Object.create(GameObject.prototype);创建 GameObject 原型的副本,允许对 Spaceship.prototype 进行更改而不影响 GameObject.prototype。这保持了对象层次结构的独立性和封装性,同时保留了所需的继承关系。
以上是为什么 Child.prototype = Parent.prototype 对于 JavaScript 继承来说是一个坏主意?的详细内容。更多信息请关注PHP中文网其他相关文章!