JavaScript设计模式与开发实践 组合模式

摘要: 组合模式就是用小的子对象来构建更大的对象,而这些小的子对象本身也许是由更小的“孙对象”构成的。 一、组合模式的用途 组合模式将对象组合成树形结构,以表示“部分.整体”的层次结构。 除了用来表示树形结构之外,组合模式的另一个好处是通过对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性,具体 阅读全文
posted @ 2016-11-18 11:35 Surahe 阅读(350) 评论(0) 推荐(0) 编辑

JavaScript设计模式与开发实践 命令模式

摘要: 命令模式是最简单和优雅的模式之一,命令模式中的命令(command)指的是一个执行某些特定事情的指令。 命令模式最常见的应用场景是:有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。此时希望用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此之间 阅读全文
posted @ 2016-11-16 17:00 Surahe 阅读(221) 评论(0) 推荐(0) 编辑

JavaScript设计模式与开发实践 发布—订阅模式

摘要: 发布—订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。在 JavaScript 开发中,我们一般用事件模型来替代传统的发布—订阅模式。 一、发布-订阅模式的作用 发布—订阅模式可以广泛应用于异步编程中,这是一种替代传递回调函数的 阅读全文
posted @ 2016-11-15 16:19 Surahe 阅读(1297) 评论(0) 推荐(0) 编辑

JavaScript设计模式与开发实践 迭代器模式

摘要: 迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也可以按顺序访问其中的每个元素。 一、内部迭代器和外部迭代器 1. 内部迭代器 内部迭代器函数的内部已经定义好了 阅读全文
posted @ 2016-11-14 19:25 Surahe 阅读(256) 评论(0) 推荐(0) 编辑

JavaScript设计模式与开发实践 代理模式

摘要: 代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。 代理模式的关键是,当客户不方便直接访问一个对象或者不满足需要的时候,提供一个替身对象来控制对这个对象的访问,客户实际上访问的是替身对象。替身对象对请求做出一些处理之后,再把请求转交给本体对象。 一、保护代理和虚拟代理 保护代理:代理 阅读全文
posted @ 2016-11-14 15:26 Surahe 阅读(343) 评论(0) 推荐(0) 编辑

JavaScript设计模式与开发实践 策略模式

摘要: 定义 定义一系列算法,把它们封装起来,并使它们可以相互替换。具体来说就是,定义一系列算法,把它们各自封装成策略类,算法被封装在策略类内部的方法。在客户对Context发起请求的时,Context总是把请求委托给策略对象中的某个方法计算。 Javascript的策略模式 使用策略模式实现缓动动画 编写 阅读全文
posted @ 2016-11-11 10:29 Surahe 阅读(162) 评论(0) 推荐(0) 编辑

跨域知识总结

摘要: 一、概述 1.1 什么是同源 只要协议、域名、端口有任何一个不同,都被当作是不同的域。 1.2 限制范围 目前,如果非同源,共有三种行为受到限制: 1.3 其他 (“URL的首部”指window.location.protocol +window.location.host,也可以理解为“Domai 阅读全文
posted @ 2016-11-09 19:05 Surahe 阅读(313) 评论(0) 推荐(0) 编辑

JavaScript设计模式与开发实践 单例模式

摘要: 单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 当我们点击登陆按钮时,页面会出现登陆浮窗,无论点击多少次按钮,这个浮窗只会被创建一次,那么它就适合用单例模式来创建。 1 JavaScript中的单例模式 我们经常把全局变量当成单例模式使用,但它会造成命名空间污染。可以用以下方 阅读全文
posted @ 2016-11-03 16:37 Surahe 阅读(144) 评论(0) 推荐(0) 编辑

JavaScript设计模式与开发实践 闭包和高级函数

摘要: 1、闭包 1.1 变量的生命周期 除了变量的作用域,另一个域闭包有关的概念是变量额生存周期。 函数内部用var声明的局部变量,退出函数时,会随着函数调用的结束而被销毁. 这里当执行var f = func()后,f返回了一个匿名函数的引用,它可以访问到func()被调用时产生的环境,而局部变量a一直 阅读全文
posted @ 2016-11-01 19:08 Surahe 阅读(288) 评论(0) 推荐(0) 编辑

柯里化与反柯里化

摘要: 柯里化 什么是柯里化 柯里化(英语:Currying),是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。 柯里化的基础 上面的代码其实是一个高阶函数(high-order function), 高阶函数是指操作函数的函数, 阅读全文
posted @ 2016-10-28 18:24 Surahe 阅读(285) 评论(0) 推荐(0) 编辑