无参数类继承的问题
先看一段示例代码,实现B继承于A:
复制代码 代码如下:
function A() {
}
A.prototype.a1 = function() {
};
function B() {
}
B.prototype = new A();
B.prototype.b1 = function() {
};
var b = new B();
alert(b.constructor == A); // true
alert(b.constructor == B); // false
这段代码的主要问题是:
* 需要实例化A作为B的原型,此时就执行了A的构造函数。但按照面向对象的规则,实例化B之前,B及其父类A的构造函数都不应该执行。
* 更改了B的prototype,导致b.constructor不是B而是A。
有参类继承的问题
假设A和B都有两个字符串参数s1和s2,A中计算了两段字符串的总长度,B直接以s1、s2为参数调用A:
复制代码 代码如下:
function A(s1, s2) {
this.totalLength = s1.length + s2.length;
}
A.prototype.a1 = function() {
};
function B(s1, s2) {
}
B.prototype = new A();
B.prototype.b1 = function() {
};
new B("ab", "123");
可以看到,这段代码中根本没有办法把s1和s2传到A,而又因为实例化A作为B的原型时没有参数,所以出现了异常:
复制代码 代码如下:
s1 is undefined
解决方案
s1和s2的作用域只在B内,要把它们传到A,就只能在B中操作,借助函数的apply方法就可以实现之:
复制代码 代码如下:
function B(s1, s2) {
A.apply(this, arguments);
alert(this.totalLength);
}
接下来的问题就是如何把A的方法添加到B的原型中去。这也不难,只要遍历A.prototype,把方法复制到B.prototype即可。要注意的是,对于同名的方法,自然是子类优先(重载),因而不能覆盖:
复制代码 代码如下:
for (var m in A.prototype) {
if (!B.prototype[m]) { // 父类不能覆盖子类的方法
B.prototype[m] = A.prototype[m];
}
}
后记
考虑到C#、Java等高级语言都抛弃了多继承,因此,本文所讨论的也只是单继承的情况。而本文所述的继承方法,也会写成jRaiser的一个扩展,迟些发布。
相关推荐:
seo需要懂什么源码,seo需要懂什么源码技术 ,ai 纤维
SEO如何做?全方位解析提升网站排名的秘诀,AI翻译好处
SEO优化排名:让您的网站在搜索引擎中脱颖而出,我ai 达瓦仓决
二创AI:打破创意壁垒,引领未来内容创作新潮流,背影教案网站建设游戏
什么是seo公司口碑,seo品牌 ,ai大模型训练是什么意思
中文润色:提升表达的艺术,打造无懈可击的语言魅力,广告营销推广新思路论文
为什么要监控SEO效果,国家为什么要监控个人 ,抚顺ai系统
seo渠道优化是什么,seo渠道推广怎么做 ,ai121333
ChatGPT美区要梯子吗?轻松畅享全球智能聊天体验,ai音位
优方法-高效生活与工作的秘密武器,钻石营销推广方案
SEO查看-如何通过精确分析提升网站流量与排名,东丽网站建设价格
撰写稿子的AI,写作的“超级助手”来了!
SEO优化是做什么的?让你的网站流量飙升的秘密武器,乳腺癌ai作用机理
seo营销方法是什么,seo营销模式 ,ai山海
SEO流程全解析:如何提升网站流量与排名,账号如何营销推广
文章续写AI:提升写作效率,创意无限
Chato1免费么?揭开这款AI聊天机器人的神秘面纱,交个朋友ai写作
专业SEO助力企业在激烈市场竞争中脱颖而出,嘉兴海外网站推广价格
SEO注意事项:助力网站流量提升的关键策略,济宁快速seo优化价格
SEO提供:如何通过精准的SEO策略提升网站流量与品牌影响力,刷关键词排名立的火星
SEO网:让你的数字营销更加精准高效,开启网络引流新时代,丰县互联网网站推广优势
如何选择适合你的AI工具?全面解析AI工具哪个好用
AI一键生成文章免费:革新写作方式,提升创作效率
SEO总计:如何通过SEO优化实现网站流量和排名的飞跃,三元桥网站优化
文章缩写AI:高效编辑的未来之光
AI写作技巧,让创作事半功倍!
文章AI生成软件高效创作新纪元
怎么用AI润色文章,让你的文稿瞬间高大上
SEO希望:如何通过SEO优化实现网站突破,迈向成功之路,品牌网站推广软件
seo类文章是什么,seo技术文章 ,ai3.5-ai聊天
SEO软优化:助力网站实现流量爆发的秘密武器,延平区网页seo
SEO赚钱:如何通过SEO技能在网络上实现财富自由,网站怎么建设推广平台
“洗稿技巧如何让你的文章脱颖而出,轻松提升内容创作水平!”,台州椒江seo企业排名
SEO领站-从零到一打造成功网站排名的秘密,轻淘客seo怎设置
AI生成网页模板,轻松打造专业网站,ai网格画法
优化服务网-提升客户体验,打造全方位智慧服务平台,东莞网站建设员招聘信息
ChatGPT诞生背景:人工智能如何突破语言的边界,ai辅助市场调研
seo要学什么语言,做seo需要什么语言 ,ai martino
ChatGPT出现错误503?你需要知道的解决方案和应对策略,ai拉伸字效
seo用什么论坛引流,seo引流方法 ,ai写作续写神器
ChatGPT怎么找梯子:突破网络限制,轻松访问AI助手的终极指南,鬼灭之刃人物AI还原
ChatGPT为什么网址打不开?原因分析与解决方法,文档审核ai
SEO详解:如何优化你的网站提升排名,获得更多流量,伊春湖南网站优化推广
SEO爱站:提升网站排名,赢得流量的秘密武器,优化网站设计价格多少
GPT在智能聊天机器人中的作用:重塑沟通体验,开创智能未来,百万级ai
SEO优:让网站流量和排名实现飞跃的秘诀,大理哪有企业网站建设
什么是seo模型,seo模块总结 ,ai技术授课
SEO功能:助力网站流量提升与品牌曝光,天津公司网站建设与维护
ChatGPT支持多种语言输入输出,让全球资讯触手可及,联想拯救者的ai写作
SEO应该如何提升网站流量与排名?揭秘成功的SEO策略,肺炎疫苗推广营销