javascript模式——Mixin
Mixin是一种扩展收集功能的方式,能提高代码的复用率。
在javascript中,原型可以继承于其它对象的原型,并且可以为任意数量的实例定义属性。可以利用这一点来促进函数的复用。
下面一段代码就是将一些可以被复用的代码利用underscore.js里的_.extend对原型扩展,以实现高复用。
// 一些代码,可以被下面的类混入, var controls = {moveForward: function(){console.log(this.name + ' move forward');},moveLeft: function(){console.log(this.name + ' move left');},moveRight: function(){console.log(this.name + ' move right');} }// Car类 function Car(){this.name = 'car';this.moveBackward = function(){console.log(this.name + ' move backward');} }// Airplane类 function Airplane(){this.name = 'airplane';this.moveUp = function(){console.log(this.name + ' move up');}this.moveDown = function(){console.log(this.name + ' move down');} } _.extend(Car.prototype, controls); _.extend(Airplane.prototype, controls);var car = new Car() car.moveRight();var airplane = new Airplane() airplane.moveLeft();
除了使用underscore.js里的方法进行对象扩展,我们也可以自己实现混入功能,像一些有独特需求的,比如指定混入的方法名等等。
// 一些代码,可以被下面的类混入, var controls = {moveForward: function(){console.log(this.name + ' move forward');},moveLeft: function(){console.log(this.name + ' move left');},moveRight: function(){console.log(this.name + ' move right');} }// Car类 function Car(){this.name = 'car';this.moveBackward = function(){console.log(this.name + ' move backward');} }function mixin( receivingClass, givingClass ) {// only provide certain methodsif ( arguments[2] ) {for ( var i = 2, len = arguments.length; i < len; i++ ) {receivingClass[arguments[i]] = givingClass[arguments[i]];}} }mixin(Car.prototype, controls, 'moveForward');var car = new Car(); car.moveForward() // car move forward car.moveLeft() // error:undefined is not a function
转载于:https://www.cnblogs.com/winderby/p/4325087.html
javascript模式——Mixin相关推荐
- 常用的JavaScript模式
常用的JavaScript模式 模式是解决或者避免一些问题的方案. 在JavaScript中,会用到一些常用的编码模式.下面就列出了一些常用的JavaScript编码模式,有的模式是为了解决特定的问题 ...
- 《JavaScript模式》读书笔记一:基本技巧
<JavaScript模式>的读书笔记,个人向! 更新进度随我的阅读进度 基本技巧 尽量少用全局变量 防止变量污染 注意JS变量提升问题 尽量使用单一var模式,只使用一个var在函数顶部 ...
- matlab 上穿,Matlab混入模式(Mixin)
Matlab混入模式(Mixin) Mixin是一种类,这种类包含了其他类要使用的特性方法,但不必充当其他类的父类.Matlab无疑是支持多继承的.我们可以利用 Matlab 的这种特性,实现一种叫做 ...
- 【javascript】javascript设计模式mixin模式
概述: Mixin是JavaScript中用的最普遍的模式,几乎所有流行类库都会有Mixin的实现.任意一个对象的全部或部分属性拷贝到另一个对象上. 一 .混合对象 二 .混合类 转载于:https: ...
- 10个每个开发人员都喜欢的JavaScript模式
1.构造器模式 在面向对象的编程语言中,构造函数是一种特殊的方法,用于在为其分配了内存后初始化新创建的对象.在JavaScript中,几乎所有东西都是对象,我们最常对对象构造函数感兴趣. 例如,由于对 ...
- 《JavaScript模式》精要
P25. 如何避免eval()定义全局变量? 如: var jsstring = "var un = 1;"; eval(jsstring); console.log(typeof ...
- “JavaScript patterns”中译本 - 《JavaScript 模式》第三章
第三章 直接量和构造函数 JavaScript中的直接量模式更加简洁.富有表现力,且在定义对象时不容易出错.本章将对直接量展开讨论,包括对象.数组和正则表达式直接量,以及为什么要使用等价的内置构造器函 ...
- javascript 模式学习篇---基础
道格拉斯在Javascript精粹中说过,JS身上的坏毛病其实多于好的部分,但是如果我们取其精华去其糟粕,也可以保持JS代码的高效优雅,这要求我们在写js代码的时候遵循特定的模式,初看起来,这个pat ...
- Javascript模式阅读笔记 · 简介
JavaScript是一门基于Web的语言.它最初是作为在网页中操作一些特定类型元素(例如图像和表格字段)的方法,现在该语言的发展已经远远超出了预期.除了作为客户端浏览器所使用的脚本,现在JavaSc ...
最新文章
- vs 插件小番茄 visual assist x破解版 破解教程下载
- c语言请编写函数mygets,c语言中请编写函数mygets和myputs,其功能分别与gets与puts相同,函数中用getchar和putchar读入和输出字符...
- MAC下搭建java的开发环境
- 【二】Windows API 零门槛编程指南——CreateWindow 窗口创建 “万字长篇专业术语全解”
- threejs基础示例
- 算法导论-15.5-4
- hadoop 压缩工具 比较
- 60套模板免费送,一秒搞定甘特图
- HeadFirstJava学习心得——javaGUI编程
- iOS 统计代码行数
- python求梅花数_《梅花易数》又叫梅花数
- 小常识:软件常见的各种版本英文缩写
- 【第1章】凸集——几种重要的凸集
- java 垃圾回收之垃圾回收器篇
- 微信群满100人后无法扫码进群?你们要的解决方法来了!
- bittorrent端口_如何在Linux防火墙中启用BitTorrent端口?
- 神经网络学习(3)————BP神经网络以及python实现
- 厦门吾智美:ESS.OIL.CO潜力无限
- [附源码]计算机毕业设计Python+uniapp基于Android的校园考勤APPo0400(程序+源码+LW+远程部署)
- Flink 任务报错:flink FileNotFoundException: JAR file does not exist: -yn
热门文章
- 【Tools】MarkDown教程(二)-MarkDown基本语法
- 【Tiny4412】烧写Uboot到EMMC
- 如何在 Eclipse 中使用命令行
- c 数据压缩算法_CCSDS图像压缩算法之我见(一)
- java postdelayed_Android开发使用Handler的PostDelayed方法实现图片轮播功能
- 计算机论文指导书,计算机毕业论文指导书.doc
- mybatis源码刨析总结
- exit()与_exit()函数的区别
- 控制台怎么退出mysql_退出mysql控制台与退出mysql
- 组数总和—leetcode39