首页 > web前端 > js教程 > 为什么 Child.prototype = Parent.prototype 对于 JavaScript 继承来说是一个坏主意?

为什么 Child.prototype = Parent.prototype 对于 JavaScript 继承来说是一个坏主意?

DDD
发布: 2024-11-13 16:09:02
原创
772 人浏览过

Why is Child.prototype = Parent.prototype a Bad Idea for JavaScript Inheritance?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板