全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JavaScript mixin实现多继承的方法详解

本文实例讲述了JavaScript mixin实现多继承的方法。分享给大家供大家参考,具体如下:

mixin简单通俗的讲就是把一个对象的方法和属性拷贝到另一个对象上,注意这个继承还是有区别的。js是一种只支持单继承的语言,毕竟一个对象只有一个原型,如果想实现多继承,那就简单暴力的把需要继承的父类的所有属性都拷贝到子类上,就是使用mixin啦。

下面所有代码可以到github上查看完整版。

一个简单的mixin

直接上代码

function extend(destClass, srcClass) {
  var destProto = destClass.prototype;
  var srcProto = srcClass.prototype;
  for (var method in srcProto) {
    if (!destProto[method]) {
      destProto[method] = srcProto[method];
    }
  }
}
function Book(){}
Book.prototype.printName = function(){
  console.log('I am a book, named hello');
};
function JS(){}
extend(JS, Book);
var js = new JS();
console.log(js);

现在你应该大概了解mixin在做什么。

可以仅仅拷贝某些方法:

function extend(destClass, srcClass, methods) {
  var srcProto = srcClass.prototype;
  var destProto = destClass.prototype ;  
  for (var i=0; i<methods.length; i++) {
    var method = methods[i];
    if (!destProto[method]) {
      destProto[method] = srcProto[method];
    }
  }
}
function Book() {}
Book.prototype.getName = function() {};
Book.prototype.setName = function() {};
function JS() {}
extend(JS, Book, ['getName']);
var js = new JS();
console.log(js);

mixin实现多继承

直接上代码。

function extend(destClass) {
  var classes = Array.prototype.slice.call(arguments, 1);
  for (var i=0; i<classes.length; i++) {
    var srcClass = classes[i];
    var srcProto = srcClass.prototype;
    var destProto = destClass.prototype; 
    for (var method in srcProto) {
      if (!destProto[method]) {
        destProto[method] = srcProto[method];
      }
    }
  }
}
function Book() {}
Book.prototype.getName = function() {};
Book.prototype.setName = function() {};
function Tech(){}
Tech.prototype.showTech = function(){};
function JS() {}
extend(JS, Book, Tech);
var js = new JS();
console.log(js);

总结

很多前端库里都有mixin方法,只是叫法不一样,比如 jQuery的extend ,文中我们实现的都是浅拷贝,jQuery中的extend可以实现深拷贝。很多库会使用mixin的方式,将一些工具方法扩展到相应对象中,实现代码复用。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


# JavaScript  # mixin  # 多继承  # 用JavaScript实现单继承和多继承的简单方法  # ExtJS4中使用mixins实现多继承示例  # js中继承的几种用法总结(apply  # call  # prototype)  # 实现JavaScript中继承的三种方式  # JS继承--原型链继承和类式继承  # Javascript基于对象三大特性(封装性、继承性、多态性)  # Javascript 继承机制的实现  # 再谈javascript原型继承  # JavaScript继承与多继承实例分析  # 都是  # 都有  # 是一种  # 相关内容  # 是有  # 那就  # 子类  # 做什么  # 遍历  # 感兴趣  # 数据结构  # 给大家  # 拷贝到  # 只有一个  # 你应该  # 可以实现  # 更多关于  # 所述  # 程序设计  # 面向对象 


相关文章: 手机网站制作与建设方案,手机网站如何建设?  定制建站如何定义?其核心优势是什么?  宝塔面板如何快速创建新站点?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何在香港免费服务器上快速搭建网站?  如何用免费手机建站系统零基础打造专业网站?  如何挑选优质建站一级代理提升网站排名?  全景视频制作网站有哪些,全景图怎么做成网页?  如何通过cPanel快速搭建网站?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  定制建站流程解析:需求评估与SEO优化功能开发指南  如何在服务器上三步完成建站并提升流量?  小程序网站制作需要准备什么资料,如何制作小程序?  南京网站制作费用,南京远驱官方网站?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何用VPS主机快速搭建个人网站?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  如何批量查询域名的建站时间记录?  定制建站哪家更专业可靠?推荐榜单揭晓  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  建站主机如何选?高性价比方案全解析  如何快速搭建自助建站会员专属系统?  ppt制作免费网站有哪些,ppt模板免费下载网站?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  开封网站制作公司,网络用语开封是什么意思?  电商网站制作价格怎么算,网上拍卖流程以及规则?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  如何实现建站之星域名转发设置?  网站制作网站,深圳做网站哪家比较好?  如何在阿里云服务器自主搭建网站?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  制作网站公司那家好,网络公司是做什么的?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  如何通过FTP服务器快速搭建网站?  如何正确下载安装西数主机建站助手?  建站之星如何实现PC+手机+微信网站五合一建站?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  如何快速配置高效服务器建站软件?  如何快速搭建安全的FTP站点?  如何在Tomcat中配置并部署网站项目?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  C#如何在一个XML文件中查找并替换文本内容  魔毅自助建站系统:模板定制与SEO优化一键生成指南  网站制作需要会哪些技术,建立一个网站要花费多少?  建站主机与虚拟主机有何区别?如何选择最优方案?  如何制作网站标识牌,动态网站如何制作(教程)?  建站之星代理费用多少?最新价格详情介绍 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。