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