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 相关文章推荐
基于Jquery的实现回车键Enter切换焦点
Sep 14 Javascript
jquery幻灯片插件bxslider样式改进实例
Oct 15 Javascript
JavaScript使用Replace进行字符串替换的方法
Apr 14 Javascript
js获取页面description的方法
May 21 Javascript
基于JavaScript实现简单的随机抽奖小程序
Jan 05 Javascript
Bootstrap组合上、下拉框简单实现代码
Mar 06 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
Apr 18 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
Aug 04 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
JS尾递归的实现方法及代码优化技巧
Jan 19 Javascript
JavaScript相等运算符的九条规则示例详解
Oct 20 Javascript
JS定时器如何实现提交成功提示功能
Jun 12 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
如何使用动态共享对象的模式来安装PHP
2006/10/09 PHP
PHP 和 MySQL 基础教程(二)
2006/10/09 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
javascript比较文档位置
2008/04/08 Javascript
JavaScript 空位补零实现代码
2010/02/26 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
详解python的ORM中Pony用法
2018/02/09 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
Skyscanner台湾:全球知名的旅行比价引擎
2018/07/01 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
个人落户申请书怎么写?
2019/06/28 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL