微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Web开发人员专业JavaScript中的“寄生组合继承”

适用于Web开发人员的专业JavaScript,第三版作者:Nicholas C. Zakas(Wrox,2012,第210-215页)使用以下函数描述了“寄生组合继承”:
function inheritPrototype(subType,superType) {
    var prototype = object(superType.prototype); 
    prototype.constructor = subType; 
    subType.prototype = prototype; 
}

我还没有弄清楚prototype.constructor对subType的赋值是做什么的,或者应该做什么.除非我遗漏了某些内容,否则使用示例代码得到的输出是相同的:

在inheritPrototype中没有“augment object”(prototype.constructor = subType;):
http://jsfiddle.net/Q22DN/

在inheritPrototype中使用“augment object”(prototype.constructor = subType;)
http://jsfiddle.net/eAYN8/

这真的可以成为一系列无用的代码吗?谢谢你的解释!

解决方法

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

obj = new Foo();

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

原文地址:https://www.jb51.cc/html/231623.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐