[js高手之路]寄生组合式继承的优势详解
发布时间 - 2026-01-11 02:59:00 点击率:次在之前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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
网站制作软件免费下载安装,有哪些免费下载的软件网站?
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
lovemo网页版地址 lovemo官网手机登录
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
如何在阿里云通过域名搭建网站?
香港网站服务器数量如何影响SEO优化效果?
大连网站制作公司哪家好一点,大连买房网站哪个好?
Python文件操作最佳实践_稳定性说明【指导】
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
如何在万网ECS上快速搭建专属网站?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何快速搭建二级域名独立网站?
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
如何实现javascript表单验证_正则表达式有哪些实用技巧
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
Laravel如何生成URL和重定向?(路由助手函数)
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
JavaScript如何实现继承_有哪些常用方法
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
Linux系统命令中screen命令详解
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
如何快速建站并高效导出源代码?
如何利用DOS批处理实现定时关机操作详解
Java遍历集合的三种方式
如何用好域名打造高点击率的自主建站?
Laravel中的Facade(门面)到底是什么原理
如何在建站之星绑定自定义域名?
如何确认建站备案号应放置的具体位置?
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
HTML 中动态设置元素 name 属性的正确语法详解
北京的网站制作公司有哪些,哪个视频网站最好?
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
如何快速生成凡客建站的专业级图册?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
Swift中循环语句中的转移语句 break 和 continue
如何用PHP快速搭建CMS系统?
Python数据仓库与ETL构建实战_Airflow调度流程详解
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
浅谈Javascript中的Label语句
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
北京网站制作的公司有哪些,北京白云观官方网站?
文字头像制作网站推荐软件,醒图能自动配文字吗?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何快速搭建高效WAP手机网站吸引移动用户?

