#91;#12304;#26469;#20998;#26399;#23458;#26381;#30005;#35805;#12305;#93;
设计模式之Mixin模式
介绍
mixin模式就是一些提供能够被一个或者一组子类简单继承功能的类,意在重用其功能。在面向对象的语言中,我们会通过接口继承的方式来实现功能的复用。但是在javascript中,我们没办法通过接口继承的方式,但是我们可以通过javascript特有的原型链属性,将功能引用复制到原型链上,达到功能的注入。
具体实现代码:
var Car = function(opts){this.speed = opts.speed || 0} var Bike = function(opts){this.speed = opts.speed || 0;this.ride = function(){console.log('现在骑行速度是' + this.speed)}}var Feature = function(){}Feature.prototype = {drive : function(){console.log('现在开车速度是' + this.speed)},accelerate : function(val){this.speed = this.speed + val;}}//混入模式的实现function Mixin(recClass,giveClass){if(arguments.length > 2){for(var i = 2,lenth = arguments.length; i < lenth ; ++ i){var methodName = arguments[i];recClass.prototype[methodName] = giveClass.prototype[methodName];}}else{for(var methodName in giveClass.prototype){if(!recClass.prototype[methodName]){recClass.prototype[methodName] = giveClass.prototype[methodName];}}}}Mixin(Car,Feature);var BMW = new Car({})BMW.accelerate(20)BMW.drive()Mixin(Bike,Feature,'accelerate');var ofo = new Bike({})ofo.accelerate(8);ofo.ride();
#91;#12304;#26469;#20998;#26399;#23458;#26381;#30005;#35805;#12305;#93;相关推荐
- python实例 91,92,93,94
目录 Time 模块 91.时间函数举例1 92.时间函数举例2 93.时间函数举例3 94.时间函数举例4,一个猜数游戏,判断一个人反应快慢 Time 模块 Time 模块包含了以下内置函数,既有时 ...
- 提取了下刘汝佳推荐的题号...
今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started 10055 - Hashmat the Brave Warrior ...
- Office 2007打开文档提示安装Web Developer和MUI解决
主要解决办法是卸载 Web Developer 和MUI MS是这篇文章解决 http://support.microsoft.com/kb/290301/ 下载对应office的版本,运行卸载. 旧 ...
- 一、通过命令行体验长安链
一.通过命令行体验长安链 1 .概述 2.环境依赖 2.1.硬件依赖 2.2.软件依赖 2.3.git安装 2.4.golang安装 2.5.gcc 3.环境搭建 3.1.源码下载 3.2. 源码编译 ...
- 算法最少分组法_数据结构
20210328 https://blog.csdn.net/sinat_41144773/article/details/89530403 树.二叉树(完全二叉树.满二叉树)概念图解 二叉树:每个结 ...
- 【CV】吴恩达机器学习课程笔记 | 第1-15章
目录 1 介绍 1-3 监督学习 1-4 无监督学习 2 单变量线性回归 2-2 代价函数 2-5 Batch 梯度下降算法 4 多变量线性回归 4-1 多特征 4-2 多元梯度下降法 4-3 多元梯 ...
- 获取request的变量
由于IP代码未实现,先注释掉. 1 package com.helloweenvsfei.servlet; 2 3 import java.io.IOException; 4 import java. ...
- 一步一步Asp.Net MVC系列_权限管理总结(附MVC权限管理系统源码)
TZHSWEET:请大家多多反馈问题,我已经在修改中了,已更新版本...... 如果大家遇到数据库附加问题,EF连接字符串问题,请自行配置,如果有bug反馈可以私聊,我的qq:409180955. 项 ...
- 一个虚函数和虚继承的问题。
这个问题困惑好几天了.废话不多说,先上代码. 1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: ...
- SVM算法实现光学字符识别
目录 1.数据来源 2.数据预处理 3.模型训练 4.模型性能评估 5.模型性能提升 5.1.核函数的选取 5.2.惩罚参数C的选取 OCR (Optical Character Recognitio ...
最新文章
- linux指令笔试,Linux笔试常用命令
- 为什么使用 Vuetify?
- 博士申请 | 普渡大学郭齐教授组招收计算成像全奖博士生
- 深入浅出学Hive:Hive参数
- 《C语言深度解剖》学习笔记之符号
- php100教程源码,PHP100 视频教程 2012-2013版_PHP教程
- python在统计专业的应用_Python:使用Counter进行计数统计
- C#:xml操作(待补充)
- 计算机网络考研辅导谁的好,计算机网络考研辅导哪个好
- window_redis
- 高拍仪是否支持TWAIN方式的测试方法
- Drools教程(基础篇)——创建项目
- android+反编译加广告,追书神器Android版,反编译去广告基本教程
- window7电脑显示屏调亮度的四种方式
- 运放的开环增益和相移
- 密西根州立大学计算机qs分数,密歇根州立大学有哪些专业_专业排名(QS世界排名)...
- java咖啡馆_Java咖啡馆(11):Java插件技术
- 他是马化腾的偶像,拒绝马云的应聘 !如今劝年轻人不要太拼、要认命......
- docker 容器健康检查
- GHOST启动盘制作