本文实例讲述了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小时内与您取得联系。