摘要:
介绍 最近几个月忙得实在是不可开交,终于把《深入理解JavaScript系列》的最后两篇“补全”了,所谓的全是不准确的,因为很多内容都没有写呢,比如高性能、Ajax安全、DOM详解、JavaScript架构等等。但因为经历所限,加上大叔希望接下来写点其它东西,所以此篇文字就暂且当前完结篇的总结吧,以 阅读全文
posted @ 2016-04-29 17:15
爱你爱自己
阅读(185)
评论(0)
推荐(0)
摘要:
介绍 本篇我们介绍的一些模式称为初始化模式和性能模式,主要是用在初始化以及提高性能方面,一些模式之前已经提到过,这里只是做一下总结。 立即执行的函数 在本系列第4篇的《立即调用的函数表达式》中,我们已经对类似的函数进行过详细的描述,这里我们只是再举两个简单的例子做一下总结。 立即执行的对象初始化 该 阅读全文
posted @ 2016-04-29 17:14
爱你爱自己
阅读(196)
评论(0)
推荐(0)
摘要:
介绍 本篇主要是介绍Function方面使用的一些技巧(上篇),利用Function特性可以编写出很多非常有意思的代码,本篇主要包括:回调模式、配置对象、返回函数、分布程序、柯里化(Currying)。 回调函数 在JavaScript中,当一个函数A作为另外一个函数B的其中一个参数时,则函数A称为 阅读全文
posted @ 2016-04-29 17:13
爱你爱自己
阅读(279)
评论(0)
推荐(0)
摘要:
介绍 本篇主要是介绍创建对象方面的模式,利用各种技巧可以极大地避免了错误或者可以编写出非常精简的代码。 模式1:命名空间(namespace) 命名空间可以减少全局命名所需的数量,避免命名冲突或过度。一般我们在进行对象层级定义的时候,经常是这样的: 如果层级很多的话,那就要一直这样继续下去,很是混乱 阅读全文
posted @ 2016-04-29 17:12
爱你爱自己
阅读(252)
评论(0)
推荐(0)
摘要:
介绍 本篇主要是介绍创建对象方面的模式的下篇,利用各种技巧可以极大地避免了错误或者可以编写出非常精简的代码。 模式6:函数语法糖 函数语法糖是为一个对象快速添加方法(函数)的扩展,这个主要是利用prototype的特性,代码比较简单,我们先来看一下实现代码: 扩展对象的时候,可以这么用: 这样就给P 阅读全文
posted @ 2016-04-29 17:12
爱你爱自己
阅读(232)
评论(0)
推荐(0)
摘要:
介绍 任何编程都提出代码复用,否则话每次开发一个新程序或者写一个新功能都要全新编写的话,那就歇菜了,但是代码复用也是有好要坏,接下来的两篇文章我们将针对代码复用来进行讨论,第一篇文避免篇,指的是要尽量避免使用这些模式,因为或多或少有带来一些问题;第二排是推荐篇,指的是推荐大家使用的模式,一般不会有什 阅读全文
posted @ 2016-04-29 17:11
爱你爱自己
阅读(313)
评论(0)
推荐(0)
摘要:
介绍 本文介绍的四种代码复用模式都是最佳实践,推荐大家在编程的过程中使用。 模式1:原型继承 原型继承是让父对象作为子对象的原型,从而达到继承的目的: 同时,ECMAScript5也提供了类似的一个方法叫做Object.create用于继承对象,用法如下: 而且,也可以更细粒度地在第二个参数上定义属 阅读全文
posted @ 2016-04-29 17:11
爱你爱自己
阅读(228)
评论(0)
推荐(0)
摘要:
介绍 桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化。 正文 桥接模式最常用在事件监控上,先看一段代码: 上述代码,有个问题就是getBeerById必须要有浏览器的上下文才能使用,因为其内部使用了this.id这个属性,如果没用上下文,那就歇菜了。所以说一般稍微有经验 阅读全文
posted @ 2016-04-29 17:10
爱你爱自己
阅读(322)
评论(0)
推荐(0)
摘要:
介绍 状态模式(State)允许一个对象在其内部状态改变的时候改变它的行为,对象看起来似乎修改了它的类。 正文 举个例子,就比如我们平时在下载东西,通常就会有好几个状态,比如准备状态(ReadyState)、下载状态(DownloadingState)、暂停状态(DownloadPausedStat 阅读全文
posted @ 2016-04-29 17:09
爱你爱自己
阅读(188)
评论(0)
推荐(0)
摘要:
介绍 原型模式(prototype)是指用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的对象。 正文 对于原型模式,我们可以利用JavaScript特有的原型继承特性去创建对象的方式,也就是创建的一个对象作为另外一个对象的prototype属性值。原型对象本身就是有效地利用了每个构造器创建 阅读全文
posted @ 2016-04-29 17:08
爱你爱自己
阅读(203)
评论(0)
推荐(0)
摘要:
介绍 组合模式(Composite)将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 常见的场景有asp.net里的控件机制(即control里可以包含子control,可以递归操作、添加、删除子control),类似的还有DOM的机制,一个 阅读全文
posted @ 2016-04-29 17:07
爱你爱自己
阅读(228)
评论(0)
推荐(0)
摘要:
介绍 模板方法(TemplateMethod)定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法是一种代码复用的基本技术,在类库中尤为重要,因为他们提取了类库中的公共行为。模板方法导致一种反向的控制结构,这种结构 阅读全文
posted @ 2016-04-29 17:07
爱你爱自己
阅读(225)
评论(0)
推荐(0)
摘要:
介绍 职责链模式(Chain of responsibility)是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。 也就是说,请求以后,从第一个对象开始,链中收到请求的对象要么亲自处理它,要么转发给链中 阅读全文
posted @ 2016-04-29 17:06
爱你爱自己
阅读(223)
评论(0)
推荐(0)
摘要:
介绍 适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一些工作。速成包装器(wrapper)。 正文 我们来举一个例子,鸭子(Dock)有飞(fly)和嘎嘎叫(quack) 阅读全文
posted @ 2016-04-29 17:06
爱你爱自己
阅读(148)
评论(0)
推荐(0)
摘要:
介绍 中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 主要内容来自:http://www.addyosmani.com/resources/essentialjsdesignpattern 阅读全文
posted @ 2016-04-29 17:05
爱你爱自己
阅读(220)
评论(0)
推荐(0)
摘要:
介绍 享元模式(Flyweight),运行共享技术有效地支持大量细粒度的对象,避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)。 享元模式可以避免大量非常相似类的开销,在程序设计中,有时需要生产大量细粒度的类实例来表示数据,如果能发现这些实例除了几个参数以外,开销基本相同的 阅读全文
posted @ 2016-04-29 17:05
爱你爱自己
阅读(202)
评论(0)
推荐(0)
摘要:
介绍 命令模式(Command)的定义是:用于将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及执行可撤销的操作。也就是说改模式旨在将函数的调用、请求和操作封装成一个单一的对象,然后对这个对象进行一系列的处理。此外,可以通过调用实现具体函数的对象来解耦 阅读全文
posted @ 2016-04-29 17:04
爱你爱自己
阅读(175)
评论(0)
推荐(0)
摘要:
介绍 迭代器模式(Iterator):提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。 迭代器的几个特点是: 正文 一般的迭代,我们至少要有2个方法,hasNext()和Next(),这样才做做到遍历所有对象,我们先给出一个例子: 使用方法和平时C#里的方式是一样的: 当然,你也可 阅读全文
posted @ 2016-04-29 17:04
爱你爱自己
阅读(198)
评论(0)
推荐(0)
摘要:
介绍 观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。 使用观察者模式的好处: 正文(版本一) JS里对观察者模式的实现是通过回调来实现 阅读全文
posted @ 2016-04-29 17:03
爱你爱自己
阅读(216)
评论(0)
推荐(0)
摘要:
介绍 策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。 正文 在理解策略模式之前,我们先来一个例子,一般情况下,如果我们要做数据合法性验证,很多时候都是按照swith语句来判断,但是这就带来几个问题,首先如果增加需求的话,我们还要再次修改这段 阅读全文
posted @ 2016-04-29 17:03
爱你爱自己
阅读(195)
评论(0)
推荐(0)

浙公网安备 33010602011771号