摘要:介绍与创建型模式类似,工厂模式创建对象(视为工厂里的产品)时无需指定创建对象的具体类。工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。该模式使一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候指定自己的对象类型。这个模式十分有用,尤其是创建对象的流程赋值的时候,比如依赖于很多设置文件等。并且,你会经常在程序里看到工厂方法,用于让子类类定义需要创建的对象类型。正文下面这个例子中,是应用了工厂方法对第26章构造函数模式代码的改进版本:var Car = (function () { var Car = function (model, year, mile... 阅读全文
深入理解JavaScript系列(27):设计模式之建造者模式
2012-02-22 10:01 by 汤姆大叔, 17096 阅读, 33 推荐, 收藏, 编辑
摘要:介绍在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。建造者模式可以将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。也就是说如果我们用了建造者模式,那么用户就需要指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。正文这个模式相对来说比较简单,先上代码 阅读全文
深入理解JavaScript系列(26):设计模式之构造函数模式
2012-02-21 08:59 by 汤姆大叔, 28009 阅读, 47 推荐, 收藏, 编辑
摘要:介绍构造函数大家都很熟悉了,不过如果你是新手,还是有必要来了解一下什么叫构造函数的。构造函数用于创建特定类型的对象——不仅声明了使用的对象,构造函数还可以接受参数以便第一次创建对象的时候设置对象的成员值。你可以自定义自己的构造函数,然后在里面声明自定义类型对象的属性或方法。基本用法在JavaScript里,构造函数通常是认为用来实现实例的,JavaScript没有类的概念,但是有特殊的构造函数。通过new关键字来调用定义的否早函数,你可以告诉JavaScript你要创建一个新对象并且新对象的成员声明都是构造函数里定义的。在构造函数内部,this关键字引用的是新创建的对象。基本用法如下:func 阅读全文
深入理解JavaScript系列(25):设计模式之单例模式
2012-02-20 08:39 by 汤姆大叔, 79480 阅读, 86 推荐, 收藏, 编辑
摘要:介绍从本章开始,我们会逐步介绍在JavaScript里使用的各种设计模式实现,在这里我不会过多地介绍模式本身的理论,而只会关注实现。OK,正式开始。在传统开发工程师眼里,单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。在JavaScript里,单例作为一个命名空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象。正文在JavaScript里,实现单例的方式有很多种,其中最简单的一个方式是使用对象字面量的方法,其字面量里可以包含大量的属性和方法:var mySingleton = { ... 阅读全文
深入理解JavaScript系列(24):JavaScript与DOM(下)
2012-02-17 09:58 by 汤姆大叔, 18995 阅读, 41 推荐, 收藏, 编辑
摘要:介绍上一章我们介绍了JavaScript的基本内容和DOM对象的各个方面,包括如何访问node节点。本章我们将讲解如何通过DOM操作元素并且讨论浏览器事件模型。本文参考:http://net.tutsplus.com/tutorials/javascript-ajax/javascript-and-the-dom-lesson-2/操作元素上一章节我们提到了DOM节点集合或单个节点的访问步骤,每个DOM节点都包括一个属性集合,大多数的属性都提供为相应的功能提供了抽象。例如,如果有一个带有ID属性intro的文本元素,你可以很容易地通过DOM API来改变该元素的颜色:document.getE 阅读全文
大叔手记(20):ASP.NET MVC中使用jQuery时的浏览器缓存问题
2012-02-16 14:49 by 汤姆大叔, 9362 阅读, 26 推荐, 收藏, 编辑
摘要:介绍尽管jQuery在浏览器ajax调用的时候对缓存提供了很好的支持,还是有必要了解一下如何高效地使用http协议。首先要做的事情是在服务器端支持HTTP GET,定义不同的URL输出不同的数据(MVC里对应的就是action)。如果要使用同一个地址获取不同的数据,那就不对了,一个HTTP POST也不行因为POST不能被缓存。许多开发人员使用POST主要有2个原因:明确了数据不能被缓存,或者是避免JSON攻击(JSON返回数组的时候可以被入侵)。缓存解释jQuery全局对象里的ajax方法提供了一些options来支持缓存和Conditional GETs功能。$.ajax({ ifM... 阅读全文
深入理解JavaScript系列(23):JavaScript与DOM(上)——也适用于新手
2012-02-16 08:56 by 汤姆大叔, 35628 阅读, 64 推荐, 收藏, 编辑
摘要:文档对象模型Document Object ModelDOM(Document Object Model,文档对象模型)是一个通过和JavaScript进行内容交互的API。Javascript和DOM一般经常作为一个整体,因为Javascript通常都是用来进行DOM操作和交互的。主要内容来自:http://net.tutsplus.com/tutorials/javascript-ajax/javascript-and-the-dom-series-lesson-1/关于DOM,有些知识需要注意:1. window对象作为全局对象,也就是说你可以通过window来访问全局对象。属性在对象下 阅读全文
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP
2012-02-15 09:12 by 汤姆大叔, 11808 阅读, 23 推荐, 收藏, 编辑
摘要:前言本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第5篇,依赖倒置原则LSP(TheDependency Inversion Principle )。英文原文:http://freshbrewedcode.com/derekgreer/2012/01/22/solid-javascript-the-dependency-inversion-principle/依赖倒置原则依赖倒置原则的描述是:A. High-level modules should not depend on low-level modules. Both should depend on abs. 阅读全文
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP
2012-02-14 10:49 by 汤姆大叔, 13206 阅读, 24 推荐, 收藏, 编辑
摘要:前言本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第4篇,接口隔离原则ISP(The Interface Segregation Principle)。英文原文:http://freshbrewedcode.com/derekgreer/2012/01/08/solid-javascript-the-interface-segregation-principle/注:这篇文章作者写得比较绕口,所以大叔理解得也比较郁闷,凑合着看吧,别深陷进去了接口隔离原则的描述是:Clients should not be forced to depend on methods th 阅读全文
深入理解JavaScript系列(20):《你真懂JavaScript吗?》答案详解
2012-02-10 08:54 by 汤姆大叔, 46801 阅读, 90 推荐, 收藏, 编辑
摘要:介绍昨天发的《大叔手记(19):你真懂JavaScript吗?》里面的5个题目,有很多回答,发现强人还是很多的,很多人都全部答对了。今天我们来对这5个题目详细分析一下,希望对大家有所帮助。注:问题来自大名鼎鼎的前端架构师Baranovskiy的帖子《So, you think you know JavaScript?》。答案也是来自大名鼎鼎的JS牛人Nicholas C. Zakas的帖子《Answering Baranovskiy’s JavaScript quiz》——《JavaScript高级程序设计》一书的原作者(但题目2的解释貌似有点问题)OK,我们先看第一题题目1if (!(&qu 阅读全文