js常用的继承--组合式继承
发布时间 - 2026-01-10 23:28:43 点击率:次组合继承有时候也叫伪经典继承,指的是将原型链和借用构造函数技术组合到一块,从而发挥二者之长的一种继承模式,其背后的思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样既通过在原型上定义方法实现了函数复用,又能保证每个实例都有它的自己的属性。
function SuperType(name){
this.name=name;
this.colors=["red","blue","green"];
}
SuperType.prototype.sayName=function(){
console.log(this.name);
}
function SubType(name,age){
SuperType.call(this,name);
this.age=age;
}
SubType.prototype=new SuperType();
SubType.prototype.constructor=SubType;
SubType.prototype.sayAge=function(){
console.log(this.age);
}
var instance1=new SubType("zxf",24);
instance1.colors.push("black");
console.log(instance1.colors);//["red","blue","green","black"]
instance1.sayName();//"zxf"
instance1.sayAge();//24
var instance2=new SubType("jay",36);
console.log(instance2.colors);//["red","blue","green"]
instance2.sayName();//"jay"
instance2.sayAge();//36
在这个例子中,supertype构造函数定义了两个属性,name和colors。supertype的原型定义了一个方法sayname()。subtype构造函数调用supertype时传入了name参数,紧接着又定义了它自己的属性age。然后将supertype的实例赋值给subtype的原型,然后又在该新原型上定义了方法sayage()。这样一来,就可以让两个不同的subtype实例既可以拥有属性--包括colors属性,又可以使用相同的方法。
组合式继承缺点是:调用了两次supertype构造函数,一次在赋值subtype的原型时,一次在实例化子类时call调用,这次调用会屏蔽原型中的两个同名属性。
参考书籍:Javascript高级程序设计(第3版);
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# js
# 组合式
# 继承
# 简单谈谈JavaScript寄生式组合继承
# Javascript组合继承方法代码实例解析
# 实例介绍JavaScript中多种组合继承
# JavaScript寄生组合式继承原理与用法分析
# JavaScript类的继承方法小结【组合继承分析】
# JavaScript寄生组合式继承实例详解
# [js高手之路]从原型链开始图解继承到组合继承的产生详解
# [js高手之路]寄生组合式继承的优势详解
# JS继承之借用构造函数继承和组合继承
# JavaScript组合继承详解
# 自己的
# 都有
# 在这个
# 两次
# 又能
# 既可
# 指的是
# 来实现
# 也叫
# 又可
# 程序设计
# 就可以
# 之长
# 复用
# 实现了
# 化子
# 然后又
# SuperType
# colors
# function
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Laravel怎么调用外部API_Laravel Http Client客户端使用
微信小程序 闭包写法详细介绍
高端企业智能建站程序:SEO优化与响应式模板定制开发
高防服务器租用首荐平台,企业级优惠套餐快速部署
PHP正则匹配日期和时间(时间戳转换)的实例代码
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
如何为不同团队 ID 动态生成多个非值班状态按钮
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
如何续费美橙建站之星域名及服务?
Swift开发中switch语句值绑定模式
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
如何自定义建站之星模板颜色并下载新样式?
Android自定义控件实现温度旋转按钮效果
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
如何打造高效商业网站?建站目的决定转化率
如何快速建站并高效导出源代码?
Java垃圾回收器的方法和原理总结
Laravel中的Facade(门面)到底是什么原理
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
长沙企业网站制作哪家好,长沙水业集团官方网站?
Laravel如何实现文件上传和存储?(本地与S3配置)
想要更高端的建设网站,这些原则一定要坚持!
公司网站制作价格怎么算,公司办个官网需要多少钱?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
公司门户网站制作流程,华为官网怎么做?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
手机网站制作与建设方案,手机网站如何建设?
Laravel安装步骤详细教程_Laravel环境搭建指南
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
Laravel怎么上传文件_Laravel图片上传及存储配置
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Laravel如何使用查询构建器?(Query Builder高级用法)
详解Android图表 MPAndroidChart折线图
香港服务器WordPress建站指南:SEO优化与高效部署策略
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
php json中文编码为null的解决办法
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
Laravel观察者模式如何使用_Laravel Model Observer配置

