设计模式太多了 还有些模式概念非常接近(比如观察者 中介者 和 事件发布/订阅模式)

构造器模式

var newObject = {}
var newObject = new XXX();

模块模式 (函数包裹 私有变量)

保护私有变量&& 模块引出

var MODULE = (function () {
var my = {},
privateVariable = 1; function privateMethod() {
// ...
} my.moduleProperty = 1;
my.getPrivateVariable = function () {
// ...
}; return my;
}());

模块引入

(function ($, YAHOO) {
// 当前域有权限访问全局jQuery($)和YAHOO
}(jQuery, YAHOO));

单例模式

var mySingle = (function(){
var instance;
var init = function(){
return {
pubFun: function(){
//...
}
}
};
return {
getInstance: function(){
if(!instance){
instance = init();
}
return instance;
}
}
})();
var A = mySingle.getInstance()
var B = mySingle.getInstance()
A == B //true

事件发布订阅模式

    var MyEvent = {
_listener: {},
addEvent:function(type, fn){
if(!this._listener[type]){
this._listener[type] = []
}
this._listener[type].push(fn); },
fireEvent:function(type, caller){
if(this._listener[type]){
this._listener[type].forEach(function(fn){
fn.call(caller);
});
}
},
removeEvent:function(type, fn){
if(this._listener[type]){
for (var i = 0, len = this._listener[type].length ; i < len; i++) {
this._listener[type].splice(i,1);
};
}
}
};

和观察者模式的区别

Observer模式希望观察者订阅内容改变的事件

而发布订阅模式允许自定义事件, 事件可以传递自定义参数

我理解的是观察者模式notify的时候所有的监听者都会做响应 它只发一种广播

而发布订阅模式发多种事件 对应的事件做响应

原型模式

使用Object.create(yourProtoType) 或者自己指定原型

    var car = {
init: function(name){
this.name = name;
},
drive: function(){
console.log(this.name + ' is driving..');
}
}
var yourCar = Object.create(car);
yourCar.init('Honda');
yourCar.drive();

OR

    var car = {
init: function(name){
this.name = name;
},
drive: function(){
console.log(this.name + ' is driving..');
}
}
function carFactory(name){
function F(){};
F.prototype = car;
var f = new F();
f.init(name);
return f;
}
var yourCar = carFactory('Honda');
yourCar.drive();

Javascript 设计模式笔记的更多相关文章

  1. Javascript设计模式笔记

    Javascript是越来越厉害了,一统前后端开发.于是最近把设计模式又看了一遍,顺便做了个笔记,以方便自己和他人共同学习. 笔记连载详见:http://www.meteorcn.net/wordpr ...

  2. 再起航,我的学习笔记之JavaScript设计模式02

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 我们 ...

  3. 再起航,我的学习笔记之JavaScript设计模式01

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 在通 ...

  4. 再起航,我的学习笔记之JavaScript设计模式03

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 上一 ...

  5. 再起航,我的学习笔记之JavaScript设计模式04

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 上回 ...

  6. 再起航,我的学习笔记之JavaScript设计模式05(简单工程模式)

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前几 ...

  7. 再起航,我的学习笔记之JavaScript设计模式06(工厂方法模式)

    上一次已经给大家介绍了简单工厂模式,相信大家对创建型设计模式有了初步的了解,本次我将给大家介绍的是工厂方法模式. 工厂方法模式 工厂方法模式(Factory Method):通过对产品类的抽象使其创建 ...

  8. 再起航,我的学习笔记之JavaScript设计模式06(抽象工厂模式)

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前两 ...

  9. 再起航,我的学习笔记之JavaScript设计模式08(建造者模式)

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前几 ...

随机推荐

  1. Quartz 2D - 图形上下文(Graphics Contexts)

    一个Graphics Context表示一个绘制目标.它包含绘制系统用于完成绘制指令的绘制参数和设备相关信息.Graphics Context定义了基本的绘制属性,如颜色.裁减区域.线条宽度和样式信息 ...

  2. 通过自定义注解反射生成SQL语句

    ----------------------------------------Program.cs---------------------------------------- using Sys ...

  3. hdu 4681 string

    字符串DP 题意:给你三个字符串a,b,c求字符串d的长度. 字符串d满足的要求:是a和b的公共子序列,c是它的子串. 定义dp1[i][j]表示a的第 i 位与b的第 j 位之前相同的子序列长度(包 ...

  4. PHP 定时器 边输出边刷新网页

    使用定时器的时候当然想网页能够看到输出,不希望网页直接卡住,定时器结束输出一片. 要做到定时器不卡住输出,只需要两个函数就行了,看下面代码 <?php //定时器测试代码 demo //跟踪定时 ...

  5. op cache config

    [opcache] ; dll地址 zend_extension=php_opcache.dll ; 开关打开 opcache.enable=1 ; 开启CLI opcache.enable_cli= ...

  6. Linux学习之查看远端的端口是否通畅

    以80端口为例解答 法一:此法常被用来检测是个远端端口是否通畅 [root@oldboy ~]# telnet baidu.com Trying 123.125.114.144... Connecte ...

  7. android应用程序的组成部分

    android 应用程序的组成部分 activity 应用表示层,应用程序中每一个UI都是通过activity类或者多个扩展实现的.activity使用fragment和视图来布局和显示信息,以及响应 ...

  8. TCPL 行计数

    C programming language: P13 行计数 e.g. #include <stdio.h>int main(void){    int c, nb, nt, nl;   ...

  9. Oracle单个数据文件超过32G后扩容

    Oracle单个数据文件超过32G后扩容   表空间数据文件容量与DB_BLOCK_SIZE的设置有关,而这个参数在创建数据库实例的时候就已经指定.DB_BLOCK_SIZE参数可以设置为4K.8K. ...

  10. 【Windows 8 Store App】学习三:HTTP

    原文 http://www.cnblogs.com/java-koma/archive/2013/05/22/3093309.html 1,HttpClient Win 8提供了System.Net. ...