Time of Update: 2017-01-19
介紹狀態模式(State)允許一個對象在其內部狀態改變的時候改變它的行為,對象看起來似乎修改了它的類。本文舉個例子,就比如我們平時在下載東西,通常就會有好幾個狀態,比如準備狀態(ReadyState)、下載狀態(DownloadingState)、暫停狀態(DownloadPausedState)、下載完畢狀態(DownloadedState)、失敗狀態(DownloadFailedState),也就是說在每個狀態都只可以做目前狀態才可以做的事情,而不能做其它狀態能做的事兒。由於State模式描
Time of Update: 2017-01-19
介紹原型模式(prototype)是指用原型執行個體指向建立對象的種類,並且通過拷貝這些原型建立新的對象。本文對於原型模式,我們可以利用JavaScript特有的原型繼承特性去建立對象的方式,也就是建立的一個對象作為另外一個對象的prototype屬性值。原型對象本身就是有效地利用了每個構造器建立的對象,例如,如果一個建構函式的原型包含了一個name屬性(見後面的例子),那通過這個建構函式建立的對象都會有這個屬性。在現有的文獻裡查看原型模式的定義,沒有針對JavaScript的,你可能發現很多講
Time of Update: 2017-01-19
介紹模板方法(TemplateMethod)定義了一個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。模板方法是一種代碼複用的基本技術,在類庫中尤為重要,因為他們提取了類庫中的公用行為。模板方法導致一種反向的控制結構,這種結構就是傳說中的“好萊塢法則”,即“別找找我們,我們找你”,這指的是父類調用一個類的操作,而不是相反。具體體現是物件導向編程程式設計語言裡的抽象類別(以及其中的抽象方法),以及繼承該抽象類別(和抽象方法
Time of Update: 2017-01-19
介紹組合模式(Composite)將對象組合成樹形結構以表示“部分-整體”的階層,組合模式使得使用者對單個對象和組合對象的使用具有一致性。常見的情境有asp.net裡的控制項機制(即control裡可以包含子control,可以遞迴操作、添加、刪除子control),類似的還有DOM的機制,一個DOM節點可以包含子節點,不管是父節點還是子節點都有添加、刪除、遍曆子節點的通用功能。所以說組合模式的關鍵是要有一個抽象類別,它既可以表示子項目,又可以表示父元素。本文舉個例子,有家餐廳提供了各種各樣的菜
Time of Update: 2017-01-19
介紹適配器模式(Adapter)是將一個類(對象)的介面(方法或屬性)轉化成客戶希望的另外一個介面(方法或屬性),適配器模式使得原本由於介面不相容而不能一起工作的那些類(對象)可以一些工作。速成封裝器(wrapper)。本文我們來舉一個例子,鴨子(Dock)有飛(fly)和嘎嘎叫(quack)的行為,而火雞雖然也有飛(fly)的行為,但是其叫聲是咯咯的(gobble)。如果你非要火雞也要實現嘎嘎叫(quack)這個動作,那我們可以複用鴨子的quack方法,但是具體的叫還應該是咯咯的,此時,我們就
Time of Update: 2017-01-19
介紹職責鏈模式(Chain of responsibility)是使多個對象都有機會處理請求,從而避免請求的寄件者和接受者之間的耦合關係。將這個對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理他為止。也就是說,請求以後,從第一個對象開始,鏈中收到請求的對象要麼親自處理它,要麼轉寄給鏈中的下一個候選者。提交請求的對象並不明確知道哪一個對象將會處理它——也就是該請求有一個隱式的接受者(implicit receiver)。根據運行時刻,任一候選者都可以響應相應的請求,候選者的數目是任意的,
Time of Update: 2017-01-19
介紹享元模式(Flyweight),運行共用技術有效地支援大量細粒度的對象,避免大量擁有相同內容的小類的開銷(如耗費記憶體),使大家共用一個類(元類)。享元模式可以避免大量非常相似類的開銷,在程式設計中,有時需要生產大量細粒度的類執行個體來表示資料,如果能發現這些執行個體除了幾個參數以外,開銷基本相同的 話,就可以大幅度較少需要執行個體化的類的數量。如果能把那些參數移動到類執行個體的外面,在方法調用的時候將他們傳遞進來,就可以通過共用大幅度第減少單個執行個體
Time of Update: 2017-01-19
介紹中介者模式(Mediator),用一個中介對象來封裝一系列的對象互動。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。主要內容來自:http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/本文軟體開發中,中介者是一個行為設計模式,通過提供一個統一的介面讓系統的不同部分進行通訊。一般,如果系統有很多子模組需要直接溝通,都要建立一個中央控制點讓其各模組通過該中央控制點進行互動。中
Time of Update: 2017-01-19
介紹策略模式定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化不會影響到使用演算法的客戶。本文在理解策略模式之前,我們先來一個例子,一般情況下,如果我們要做資料合法性驗證,很多時候都是按照swith語句來判斷,但是這就帶來幾個問題,首先如果增加需求的話,我們還要再次修改這段代碼以增加邏輯,而且在進行單元測試的時候也會越來越複雜,代碼如下:複製代碼 代碼如下: validator = {&
Time of Update: 2017-01-19
介紹面板模式(Facade)為子系統中的一組介面提供了一個一致的介面,此模組定義了一個高層介面,這個介面值得這一子系統更加容易使用。本文面板模式不僅簡化類中的介面,而且對介面與調用者也進行瞭解耦。面板模式經常被認為開發人員必備,它可以將一些複雜操作封裝起來,並建立一個簡單的介面用於調用。面板模式經常被用於JavaScript類庫裡,通過它封裝一些介面用於相容多瀏覽器,面板模式可以讓我們間接調用子系統,從而避免因直接存取子系統而產生不必要的錯誤。面板模式的優勢是便於使用,而且本身也比較輕量級。但也
Time of Update: 2017-01-19
介紹從本章開始,我們會逐步介紹在JavaScript裡使用的各種設計模式實現,在這裡我不會過多地介紹模式本身的理論,而只會關注實現。OK,正式開始。在傳統開發工程師眼裡,單例就是保證一個類只有一個執行個體,實現的方法一般是先判斷執行個體存在與否,如果存在直接返回,如果不存在就建立了再返回,這就確保了一個類只有一個執行個體對象。在JavaScript裡,單例作為一個命名空間提供者,從全域命名空間裡提供一個唯一的訪問點來訪問該對象。本文在JavaScript裡,實現單例的方式有很多種,其中最簡單的一
Time of Update: 2017-01-19
1.資料類型是什嗎?
Time of Update: 2017-01-19
1. 定義Property:屬性,所有的HTML元素都由HTMLElement類型表示,HTMLElement類型直接繼承自Element並添加了一些屬性,添加的這些屬性分別對應於每個HTML元素都有下面的這5個標準特性:
Time of Update: 2017-01-19
HTML 4.0 的新特性之一是能夠使 HTML 事件觸發瀏覽器中的行為,比如當使用者點擊某個 HTML 元素時啟動一段 JavaScript。下面是一個屬性列表,可將之插入 HTML 標籤以定義事件的行為。 屬性 此事件發生在何時... onabort 映像的載入被中斷。 onblur 元素失去焦點。 onchange 域的內容被改變。
Time of Update: 2017-01-19
什麼是 Cookie“cookie 是儲存於訪問者的電腦中的變數。每當同一台電腦通過瀏覽器請求某個頁面時,就會發送這個 cookie。你可以使用 JavaScript 來建立和取回 cookie 的值。” - w3schoolcookie 是訪問過的網站建立的檔案,用於儲存瀏覽資訊,例如設定檔資訊。從JavaScript的角度看,cookie 就是一些字串資訊。這些資訊存放在用戶端的電腦中,用於用戶端電腦與伺服器之間傳遞資訊。在JavaScript中可以通過 document.cookie
Time of Update: 2017-01-19
JavaScript資料類型1.Boolean(布爾)布爾:(實值型別)var b1=true;//布爾類型2.Number(數字)數值:(實值型別)var n1=3.1415926;//數實值型別n1.toFixed(3);//四捨五入保留3位小數。3.String(字串)複製代碼 代碼如下:var
Time of Update: 2017-01-19
簡介JavaScript是一種指令碼語言。
Time of Update: 2017-01-19
本文內容很簡單,給大家總結一下javascript獲得當前的資訊的一些常用命令console.info("document.URL=" + document.URL); console.info("document.location.href=" + document.location.href); //console.info("document.base=" + document.base); //這是錯的! console.info("document.location=" +
Time of Update: 2017-01-19
關於call,apply,bind這三個函數的用法,是學習javascript這門語言無法越過的知識點。下邊我就來好好總結一下它們三者各自的用法,及常見的應用情境。首先看call這個函數,可以理解成"借用“,"請求"。想像一下如下的情景:你孤單一人漂泊在外,有急事想往家裡打電話,可是很不巧,手機欠費了,或者沒電了,或者掉坑裡了,總之你的手機就是用不成。可是你非打這個電話不可,於是你可以去借一下朋友的手機,或者借用一下鄰居的手機,或者公用電話,這樣呢,你就可以在自己沒有手機可用的情況下,完成打電話
Time of Update: 2017-01-19
僅在}之前、一個或多個換行之後和程式輸入的結尾被插入也就是說你只能在一行、一個代碼塊和一段程式結束的地方省略分號。也就是說你可以寫如下代碼複製代碼 代碼如下:function square(x) { var n = +x return n * n}但是卻不可以寫的像下面代碼一樣,這樣就報錯了哦複製代碼 代碼如下:function area(r) { r =