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配置