gpt4 book ai didi

javascript - Web 开发人员专业 JavaScript 中的 "Parasitic Combination Inheritance"

转载 作者:数据小太阳 更新时间:2023-10-29 05:23:16 29 4
gpt4 key购买 nike

Web 开发人员专业 JavaScript,第三版,Nicholas C. Zakas(Wrox,2012 年,第 210-215 页描述了使用以下函数的“寄生组合继承”:

function inheritPrototype(subType, superType) {
var prototype = object(superType.prototype);
prototype.constructor = subType;
subType.prototype = prototype;
}

我还没有弄清楚将 subType 分配给 prototype.constructor 做什么或应该做什么。除非我遗漏了什么,否则我使用示例代码得到的输出是相同的:

在 inheritPrototype 中没有“扩充对象”(prototype.constructor = subType;): http://jsfiddle.net/Q22DN/

在inheritPrototype中用“扩充对象”(prototype.constructor = subType;) http://jsfiddle.net/eAYN8/

这真的是一行无意义的代码吗?谢谢你的解释!

最佳答案

“构造函数”的赋值不是强制性的,因为“原型(prototype)”的赋值是强制性的。这样做的原因是函数原型(prototype)通常带有默认设置的“构造函数”属性。它对于复制对象的库可能很有用,因为您可以从对象本身获取对该对象的构造函数的引用。

function Foo(){
}

obj = new Foo();

console.log(obj.constructor); //function Foo

关于javascript - Web 开发人员专业 JavaScript 中的 "Parasitic Combination Inheritance",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16929353/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com