在之前javascript面向对象系列的文章里面,我们已经探讨了组合继承和寄生继承,回顾下组合继承:
function Person( uName ){
this.skills = [ 'php', 'javascript' ];
this.userName = uName;
}
Person.prototype.showUserName = function(){
return this.userName;
}
function Teacher ( uName ){
Person.call( this, uName );
}
Teacher.prototype = new Person();
var oT1 = new Teacher( 'ghostwu' );
oT1.skills.push( 'linux' );
var oT2 = new Teacher( 'ghostwu' );
console.log( oT2.skills ); //php,javascript
console.log( oT2.showUserName() ); //ghostwu
组合继承有个缺点,父类的构造函数会被调用两次.
第11行,设置子类原型对象(prototype),调用了第一次
第9行,实例化对象的时候,又调用一次
构造函数的目的是为了复制属性,第9行肯定是不能少的,第11行的目的是为了获取到父类原型对象(prototype)上的方法,基于这个目的,有没有别的方法
可以做到 在不需要实例化父类构造函数的情况下,也能得到父类原型对象上的方法呢? 当然可以,我们可以采用寄生式继承来得到父类原型对象上的方法
function Person( uName ){
this.skills = [ 'php', 'javascript' ];
this.userName = uName;
}
Person.prototype.showUserName = function(){
return this.userName;
}
function Teacher ( uName ){
Person.call( this, uName );
}
function object( o ){
var G = function(){};
G.prototype = o;
return new G();
}
function inheritPrototype( subObj, superObj ){
var proObj = object( superObj.prototype ); //复制父类superObj的原型对象
proObj.constructor = subObj; //constructor指向子类构造函数
subObj.prototype = proObj; //再把这个对象给子类的原型对象
}
inheritPrototype( Teacher, Person );
var oT1 = new Teacher( 'ghostwu' );
oT1.skills.push( 'linux' );
var oT2 = new Teacher( 'ghostwu' );
console.log( oT2.skills ); //php,javascript
console.log( oT2.showUserName() ); //ghostwu
其实,说白了寄生组合式继承就是一个借用构造函数 + 相当于浅拷贝父类的原型对象
以上这篇[js高手之路]寄生组合式继承的优势详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# js
# 寄生组合式继承
# 简单谈谈JavaScript寄生式组合继承
# Javascript组合继承方法代码实例解析
# 实例介绍JavaScript中多种组合继承
# JavaScript寄生组合式继承原理与用法分析
# JavaScript类的继承方法小结【组合继承分析】
# JavaScript寄生组合式继承实例详解
# [js高手之路]从原型链开始图解继承到组合继承的产生详解
# js常用的继承--组合式继承
# JS继承之借用构造函数继承和组合继承
# JavaScript组合继承详解
# 子类
# 给大家
# 是为了
# 有个
# 不需要
# 也能
# 两次
# 我们可以
# 之路
# 希望能
# 这篇
# 说白了
# 再把
# 小编
# 可以做到
# 不能少
# 大家多多
# 面向对象
# 情况下
# return
相关文章:
python的本地网站制作,如何创建本地站点?
,怎么用自己头像做动态表情包?
如何续费美橙建站之星域名及服务?
b2c电商网站制作流程,b2c水平综合的电商平台?
北京网站制作网页,网站升级改版需要多久?
黑客入侵网站服务器的常见手法有哪些?
如何在云服务器上快速搭建个人网站?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
广德云建站网站建设方案与建站流程优化指南
宝塔新建站点为何无法访问?如何排查?
,购物网站怎么盈利呢?
学校建站服务器如何选型才能满足性能需求?
建站之星代理费用多少?最新价格详情介绍
如何在万网自助建站中设置域名及备案?
如何通过NAT技术实现内网高效建站?
长沙做网站要多少钱,长沙国安网络怎么样?
如何零成本快速生成个人自助网站?
如何打造高效商业网站?建站目的决定转化率
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
ppt制作免费网站有哪些,ppt模板免费下载网站?
如何挑选优质建站一级代理提升网站排名?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何在腾讯云免费申请建站?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何用wdcp快速搭建高效网站?
网站app免费制作软件,能免费看各大网站视频的手机app?
网站企业制作流程,用什么语言做企业网站比较好?
建站之星免费版是否永久可用?
简单实现Android文件上传
为什么Go需要go mod文件_Go go mod文件作用说明
如何用5美元大硬盘VPS安全高效搭建个人网站?
红河网站制作公司,红河事业单位身份证如何上传?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
如何在云主机上快速搭建多站点网站?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
企业微网站怎么做,公司网站和公众号有什么区别?
如何在Golang中指定模块版本_使用go.mod控制版本号
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
深圳网站制作培训,深圳哪些招聘网站比较好?
建站之星如何一键生成手机站?
网页设计与网站制作内容,怎样注册网站?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
javascript中的try catch异常捕获机制用法分析
宁波自助建站系统如何快速打造专业企业网站?
PHP 500报错的快速解决方法
如何选择靠谱的建站公司加盟品牌?
如何通过IIS搭建网站并配置访问权限?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
*请认真填写需求信息,我们会在24小时内与您取得联系。