首页  >  文章  >  web前端  >  为什么在 Javascript 中手动设置“构造函数”属性不符合习惯?

为什么在 Javascript 中手动设置“构造函数”属性不符合习惯?

Barbara Streisand
Barbara Streisand原创
2024-11-13 10:40:02368浏览

Why Is Manually Setting the `constructor` Property in Javascript Non-Idiomatic?

Javascript 构造函数属性的意义解释

在 Javascript 中,理解构造函数属性对于解决面向对象编程的复杂性至关重要。与经典继承模型不同,Javascript 依赖于构造函数和原型属性。

构造函数属性 主要用作信息机制,指示用于使用 new 运算符创建对象的函数。例如,new Bar() 将值 Bar 分配给构造函数属性,从而显示调用了哪个构造函数。

另一方面,原型属性在解决属性查找方面起着关键作用。当对象缺少特定属性时,Javascript 会在其自己的属性中进行搜索,然后在原型链中递归上升,包括 proto 属性,直到找到所请求的属性。

在示例中正如您所提供的,对象 b 正如预期的那样继承自 Foo 的原型。但是,您可能想知道手动设置 Bar.prototype.constructor = Bar.

这种做法并不是绝对必要的,并且被认为是非惯用的 Javascript 的意义。默认情况下,当使用 Object.create() 时,构造函数属性将反映调用函数,在本例中为 Bar。因此,正确的构造函数已经被调用。

手动设置构造函数属性可以让 Bar.prototype-object 显示为是由 Bar 而不是 Foo 创建的。这类似于 Java 等语言中的类型检查,其中构造函数属性始终反映最具体的类型。

但是,以不同的思维方式处理 Javascript 的面向对象模型非常重要。不要依赖继承,而是考虑使用接口和 mixin。此外,检查特定属性而不是对象类型是 Javascript 中更有效的方法。

尝试将经典继承严格强加到 Javascript 基于原型的机制上可能会导致混乱。拥抱 Javascript 的独特功能并利用惯用实践将使您能够更清晰地探索 Javascript 面向对象编程的世界。

以上是为什么在 Javascript 中手动设置“构造函数”属性不符合习惯?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn