首页 > web前端 > js教程 > 'new” 关键字如何影响 JavaScript 中基于原型的继承?

'new” 关键字如何影响 JavaScript 中基于原型的继承?

Barbara Streisand
发布: 2024-12-14 15:34:22
原创
879 人浏览过

How Does the `new` Keyword Impact Prototype-Based Inheritance in JavaScript?

基于原型的继承:深入研究“new”关键字的角色

当使用名为 WeatherWidget 的新函数扩展 Widget 类时,原型分配:

WeatherWidget.prototype = new Widget;
登录后复制

起着至关重要的作用。 'new' 关键字调用 Widget 构造函数并将其返回值分配给 WeatherWidget 的原型属性。

如果省略,此操作将引发错误或可能污染全局命名空间。通过使用“new”,Widget 构造函数被调用,确保正确的初始化和有效的返回值。

但是,这种方法创建了一个场景,其中所有 WeatherWidget 实例都从同一个 Widget 实例继承属性,并在它们之间共享值。这可能不符合继承原则。

要纠正此问题并实现真正的基于类的继承,应采取以下步骤:

  1. 创建一个虚拟对象:
function Dummy () {}
Dummy.prototype = Widget.prototype;
登录后复制
  1. 分配原型:
WeatherWidget.prototype = new Dummy();
登录后复制
  1. 修复构造函数:
WeatherWidget.prototype.constructor = WeatherWidget;
登录后复制

此方法确保 WeatherWidget 实例继承属性通过原型链,彼此之间不共享值。

为了更简洁ECMAScript Ed 中的解决方案。 5 及更高版本,请考虑使用:

WeatherWidget.prototype = Object.create(Widget.prototype, {
  constructor: {value: WeatherWidget}
});
登录后复制

或者,对于通用继承实现,请探索 Function.prototype.extend()。此方法可以轻松实现原型扩充,并为调用父方法提供方便的“超级”访问功能。

以上是'new” 关键字如何影响 JavaScript 中基于原型的继承?的详细内容。更多信息请关注PHP中文网其他相关文章!

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