摘要:介紹與創(chuàng)建型模式類似,工廠模式創(chuàng)建對象(視為工廠里的產(chǎn)品)時無需指定創(chuàng)建對象的具體類。工廠模式定義一個用于創(chuàng)建對象的接口,這個接口由子類決定實例化哪一個類。該模式使一個類的實例化延遲到了子類。而子類可以重寫接口方法以便創(chuàng)建的時候指定自己的對象類型。這個模式十分有用,尤其是創(chuàng)建對象的流程賦值的時候,比如依賴于很多設(shè)置文件等。并且,你會經(jīng)常在程序里看到工廠方法,用于讓子類類定義需要創(chuàng)建的對象類型。正文下面這個例子中,是應(yīng)用了工廠方法對第26章構(gòu)造函數(shù)模式代碼的改進(jìn)版本:var Car = (function () { var Car = function (model, year, mile... 閱讀全文
深入理解JavaScript系列(27):設(shè)計模式之建造者模式
2012-02-22 10:01 by 湯姆大叔, 17133 閱讀, 33 推薦, 收藏,
摘要:介紹在軟件系統(tǒng)中,有時候面臨著“一個復(fù)雜對象”的創(chuàng)建工作,其通常由各個部分的子對象用一定的算法構(gòu)成;由于需求的變化,這個復(fù)雜對象的各個部分經(jīng)常面臨著劇烈的變化,但是將它們組合在一起的算法確相對穩(wěn)定。如何應(yīng)對這種變化?如何提供一種“封裝機制”來隔離出“復(fù)雜對象的各個部分”的變化,從而保持系統(tǒng)中的“穩(wěn)定構(gòu)建算法”不隨著需求改變而改變?這就是要說的建造者模式。建造者模式可以將一個復(fù)雜對象的構(gòu)建與其表示相分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。也就是說如果我們用了建造者模式,那么用戶就需要指定需要建造的類型就可以得到它們,而具體建造的過程和細(xì)節(jié)就不需要知道了。正文這個模式相對來說比較簡單,先上代碼 閱讀全文
深入理解JavaScript系列(26):設(shè)計模式之構(gòu)造函數(shù)模式
2012-02-21 08:59 by 湯姆大叔, 28058 閱讀, 47 推薦, 收藏,
摘要:介紹構(gòu)造函數(shù)大家都很熟悉了,不過如果你是新手,還是有必要來了解一下什么叫構(gòu)造函數(shù)的。構(gòu)造函數(shù)用于創(chuàng)建特定類型的對象——不僅聲明了使用的對象,構(gòu)造函數(shù)還可以接受參數(shù)以便第一次創(chuàng)建對象的時候設(shè)置對象的成員值。你可以自定義自己的構(gòu)造函數(shù),然后在里面聲明自定義類型對象的屬性或方法。基本用法在JavaScript里,構(gòu)造函數(shù)通常是認(rèn)為用來實現(xiàn)實例的,JavaScript沒有類的概念,但是有特殊的構(gòu)造函數(shù)。通過new關(guān)鍵字來調(diào)用定義的否早函數(shù),你可以告訴JavaScript你要創(chuàng)建一個新對象并且新對象的成員聲明都是構(gòu)造函數(shù)里定義的。在構(gòu)造函數(shù)內(nèi)部,this關(guān)鍵字引用的是新創(chuàng)建的對象。基本用法如下:func 閱讀全文
深入理解JavaScript系列(25):設(shè)計模式之單例模式
2012-02-20 08:39 by 湯姆大叔, 79592 閱讀, 86 推薦, 收藏,
摘要:介紹從本章開始,我們會逐步介紹在JavaScript里使用的各種設(shè)計模式實現(xiàn),在這里我不會過多地介紹模式本身的理論,而只會關(guān)注實現(xiàn)。OK,正式開始。在傳統(tǒng)開發(fā)工程師眼里,單例就是保證一個類只有一個實例,實現(xiàn)的方法一般是先判斷實例存在與否,如果存在直接返回,如果不存在就創(chuàng)建了再返回,這就確保了一個類只有一個實例對象。在JavaScript里,單例作為一個命名空間提供者,從全局命名空間里提供一個唯一的訪問點來訪問該對象。正文在JavaScript里,實現(xiàn)單例的方式有很多種,其中最簡單的一個方式是使用對象字面量的方法,其字面量里可以包含大量的屬性和方法:var mySingleton = { ... 閱讀全文
深入理解JavaScript系列(24):JavaScript與DOM(下)
2012-02-17 09:58 by 湯姆大叔, 19045 閱讀, 41 推薦, 收藏,
摘要:介紹上一章我們介紹了JavaScript的基本內(nèi)容和DOM對象的各個方面,包括如何訪問node節(jié)點。本章我們將講解如何通過DOM操作元素并且討論瀏覽器事件模型。本文參考:http://net.tutsplus.com/tutorials/javascript-ajax/javascript-and-the-dom-lesson-2/操作元素上一章節(jié)我們提到了DOM節(jié)點集合或單個節(jié)點的訪問步驟,每個DOM節(jié)點都包括一個屬性集合,大多數(shù)的屬性都提供為相應(yīng)的功能提供了抽象。例如,如果有一個帶有ID屬性intro的文本元素,你可以很容易地通過DOM API來改變該元素的顏色:document.getE 閱讀全文
大叔手記(20):ASP.NET MVC中使用jQuery時的瀏覽器緩存問題
2012-02-16 14:49 by 湯姆大叔, 9392 閱讀, 26 推薦, 收藏,
摘要:介紹盡管jQuery在瀏覽器ajax調(diào)用的時候?qū)彺嫣峁┝撕芎玫闹С郑€是有必要了解一下如何高效地使用http協(xié)議。首先要做的事情是在服務(wù)器端支持HTTP GET,定義不同的URL輸出不同的數(shù)據(jù)(MVC里對應(yīng)的就是action)。如果要使用同一個地址獲取不同的數(shù)據(jù),那就不對了,一個HTTP POST也不行因為POST不能被緩存。許多開發(fā)人員使用POST主要有2個原因:明確了數(shù)據(jù)不能被緩存,或者是避免JSON攻擊(JSON返回數(shù)組的時候可以被入侵)。緩存解釋jQuery全局對象里的ajax方法提供了一些options來支持緩存和Conditional GETs功能。$.ajax({ ifM... 閱讀全文
深入理解JavaScript系列(23):JavaScript與DOM(上)——也適用于新手
2012-02-16 08:56 by 湯姆大叔, 35697 閱讀, 64 推薦, 收藏,
摘要:文檔對象模型Document Object ModelDOM(Document Object Model,文檔對象模型)是一個通過和JavaScript進(jìn)行內(nèi)容交互的API。Javascript和DOM一般經(jīng)常作為一個整體,因為Javascript通常都是用來進(jìn)行DOM操作和交互的。主要內(nèi)容來自:http://net.tutsplus.com/tutorials/javascript-ajax/javascript-and-the-dom-series-lesson-1/關(guān)于DOM,有些知識需要注意:1. window對象作為全局對象,也就是說你可以通過window來訪問全局對象。屬性在對象下 閱讀全文
深入理解JavaScript系列(22):S.O.L.I.D五大原則之依賴倒置原則DIP
2012-02-15 09:12 by 湯姆大叔, 11870 閱讀, 23 推薦, 收藏,
摘要:前言本章我們要講解的是S.O.L.I.D五大原則JavaScript語言實現(xiàn)的第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 湯姆大叔, 13264 閱讀, 24 推薦, 收藏,
摘要:前言本章我們要講解的是S.O.L.I.D五大原則JavaScript語言實現(xiàn)的第4篇,接口隔離原則ISP(The Interface Segregation Principle)。英文原文:http://freshbrewedcode.com/derekgreer/2012/01/08/solid-javascript-the-interface-segregation-principle/注:這篇文章作者寫得比較繞口,所以大叔理解得也比較郁悶,湊合著看吧,別深陷進(jìn)去了接口隔離原則的描述是:Clients should not be forced to depend on methods th 閱讀全文
深入理解JavaScript系列(20):《你真懂JavaScript嗎?》答案詳解
2012-02-10 08:54 by 湯姆大叔, 46903 閱讀, 90 推薦, 收藏,
摘要:介紹昨天發(fā)的《大叔手記(19):你真懂JavaScript嗎?》里面的5個題目,有很多回答,發(fā)現(xiàn)強人還是很多的,很多人都全部答對了。今天我們來對這5個題目詳細(xì)分析一下,希望對大家有所幫助。注:問題來自大名鼎鼎的前端架構(gòu)師Baranovskiy的帖子《So, you think you know JavaScript?》。答案也是來自大名鼎鼎的JS牛人Nicholas C. Zakas的帖子《Answering Baranovskiy’s JavaScript quiz》——《JavaScript高級程序設(shè)計》一書的原作者(但題目2的解釋貌似有點問題)OK,我們先看第一題題目1if (!(&qu 閱讀全文
浙公網(wǎng)安備 33010602011771號