JS自定义混合Mixin函数示例


Posted in Javascript onNovember 26, 2016

本文实例讲述了JS自定义混合Mixin函数。分享给大家供大家参考,具体如下:

<script type="text/javascript">
/* 增加函数 */
function augment(receivingClass, givingClass) {
 for(methodName in givingClass.prototype) {
  if(!receivingClass.prototype[methodName]) {
   receivingClass.prototype[methodName] = givingClass.prototype[methodName];
  }
 }
}
/* 改进的增加函数 */
function augment(receivingClass, givingClass) {
 if(arguments[2]) { // Only give certain methods.
  for(var i = 2, len = arguments.length; i < len; i++) {
   receivingClass.prototype[arguments[i]] = givingClass.prototype[arguments[i]];
  }
 }
 else { // Give all methods.
  for(methodName in givingClass.prototype) {
   if(!receivingClass.prototype[methodName]) {
    receivingClass.prototype[methodName] = givingClass.prototype[methodName];
   }
  }
 }
}
var Author = function Author(name, books) { // 构造函数
 this.name = name;
 this.books = books || 'default value';
};
Author.prototype = {
 getName: function() {
  return this.name;
 },
 getBooks: function() {
  return this.books;
 }
};
var Editor = function Editor() {
};
Editor.prototype = {
 hello: function() {
  return 'Hello,'+this.name;
 }
};
augment(Author, Editor);
var author = new Author('Ross Harmes', ['JavaScript Design Patterns']);
console.log(author.getName());
console.log(author.getBooks());
console.log(author.hello());
</script>

结果:

JS自定义混合Mixin函数示例

经过拼接处理之后,author就获取到了hello方法了,属性还是自己的name。

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

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

Javascript 相关文章推荐
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
Dec 12 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
May 07 Javascript
js下拉框二级关联菜单效果代码具体实现
Aug 03 Javascript
JavaScript中switch判断容易犯错的一个细节
Aug 27 Javascript
利用ES6语法重构React组件详解
Mar 02 Javascript
纯JS实现弹性导航条效果
Mar 06 Javascript
Vue.js中兄弟组件之间互相传值实例
Jun 01 Javascript
浅谈vue,angular,react数据双向绑定原理分析
Nov 28 Javascript
Node.js net模块功能及事件监听用法分析
Jan 05 Javascript
JavaScript Math对象和调试程序的方法分析
May 13 Javascript
13 个npm 快速开发技巧(推荐)
Jul 04 Javascript
JS+CSS实现动态时钟
Feb 19 Javascript
JS克隆,属性,数组,对象,函数实例分析
Nov 26 #Javascript
JS匿名函数类生成方式实例分析
Nov 26 #Javascript
正则表达式替换html元素属性的方法
Nov 26 #Javascript
js初始化验证实例详解
Nov 26 #Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
Nov 26 #Javascript
JS匿名函数实例分析
Nov 26 #Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
Nov 26 #Javascript
You might like
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
PHP4实际应用经验篇(4)
2006/10/09 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
php实现微信支付之现金红包
2018/05/30 PHP
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
2010/03/07 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
微信小程序实现预览图片功能
2020/10/22 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
基于js实现判断浏览器类型代码实例
2020/07/17 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
react的hooks的用法详解
2020/10/12 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
python发送伪造的arp请求
2014/01/09 Python
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
在Python中用split()方法分割字符串的使用介绍
2015/05/20 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
python turtle 绘制太极图的实例
2019/12/18 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
保安自我鉴定范文
2013/12/08 职场文书
就业意向书
2014/07/29 职场文书
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers