Time of Update: 2017-01-19
前言本章我們要講解的是S.O.L.I.D五大原則JavaScript語言實現的第5篇,依賴倒置原則LSP(The Dependency Inversion Principle )。英文原文:http://freshbrewedcode.com/derekgreer/2012/01/22/solid-javascript-the-dependency-inversion-principle/依賴倒置原則依賴倒置原則的描述是:A. High-level modules should not
Time of Update: 2017-01-19
前言本章我們要講解的是S.O.L.I.D五大原則JavaScript語言實現的第4篇,介面隔離原則ISP(The Interface Segregation
Time of Update: 2017-01-19
介紹本章,我們將講解在ECMAScript向函數function傳遞參數的策略。電腦科學裡對這種策略一般稱為“evaluation
Time of Update: 2017-01-19
複製代碼 代碼如下:var beatles = ["john","Paul","George","Ringo"];上面中的beatles數組是個傳統數組典型的例子:每個元素的下標是一個數字,每增加一個元素,這個數字就依次增加1。第一個元素的下標是0,第二個元素的下標是1。以此類推。如果在填充數組時只給出了元素的值,這個數組就將是一個傳統數組,它的各個元素的下標將被自動建立和重新整理。可以通過在填充數組時為每個新元素明確地給出下標來改變這種預設的行為。在為新元素給出下標時,不必局限於使用整數數字。
Time of Update: 2017-01-19
介紹本篇我們介紹的一些模式稱為初始化模式和效能模式,主要是用在初始化以及提高效能方面,一些模式之前已經提到過,這裡只是做一下總結。立即執行的函數在本系列第4篇的《立即調用的函數運算式》中,我們已經對類似的函數進行過詳細的描述,這裡我們只是再舉兩個簡單的例子做一下總結。複製代碼 代碼如下:// 聲明完函數以後,立即執行該函數(function () { console.log('watch out!');}
Time of Update: 2017-01-19
學一門程式設計語言,無非兩方面:一是文法,二是資料類型。類C語言的文法不外乎if、while、for、函數、算術運算等,物件導向的語言再加上object。文法只是語言設計者預先做的一套規則,不同語言文法不盡相同,但都有一些共通點,對於熟悉一兩門程式設計語言的人,學其他的程式設計語言時,文法往往不是問題(當然,如果你一直學的是類C語言,那麼首次接觸lisp時肯定也要花些時間),學習的重點往往是資料類型及其相關操作上,不是有句老話:“資料結構+演算法=程式”!其次,有些語言的文法本身就存在設計問題(
Time of Update: 2017-01-19
介紹本篇主要是介紹Function方面使用的一些技巧(上篇),利用Function特性可以編寫出很多非常有意思的代碼,本篇主要包括:回調模式、設定物件、返回函數、分布程式、柯裡化(Currying)。回呼函數在JavaScript中,當一個函數A作為另外一個函數B的其中一個參數時,則函數A稱為回呼函數,即A可以在函數B的周期內執行(開始、中間、結束時均可)。舉例來說,有一個函數用於產生node複製代碼 代碼如下:var complexComputation = function () { /*
Time of Update: 2017-01-19
介紹本篇主要是介紹建立對象方面的模式的下篇,利用各種技巧可以極大地避免了錯誤或者可以編寫出非常精簡的代碼。模式6:函數文法糖函數文法糖是為一個對象快速添加方法(函數)的擴充,這個主要是利用prototype的特性,代碼比較簡單,我們先來看一下實現代碼:複製代碼 代碼如下:if (typeof Function.prototype.method !== "function") { Function.prototype.method = function
Time of Update: 2017-01-19
介紹本篇主要是介紹建立對象方面的模式,利用各種技巧可以極大地避免了錯誤或者可以編寫出非常精簡的代碼。模式1:命名空間(namespace)命名空間可以減少全域命名所需的數量,避免命名衝突或過度。一般我們在進行對象層級定義的時候,經常是這樣的:複製代碼 代碼如下:var app = app || {};app.moduleA = app.moduleA || {};app.moduleA.subModule = app.moduleA.subModule ||
Time of Update: 2017-01-19
介紹任何編程都提出代碼複用,否則話每次開發一個新程式或者寫一個新功能都要全新編寫的話,那就歇菜了,但是代碼複用也是有好要壞,接下來的兩篇文章我們將針對代碼複用來進行討論,第一篇文避免篇,指的是要盡量避免使用這些模式,因為或多或少有帶來一些問題;第二排是推薦篇,指的是推薦大家使用的模式,一般不會有什麼問題。模式1:預設模式代碼複用大家常用的預設模式,往往是有問題的,該模式使用Parent()的建構函式建立一個對象,並且將該對象賦值給Child()的原型。我們看一下代碼:複製代碼
Time of Update: 2017-01-19
DOM自身存在很多類型,在上一章中有介紹,比如Element類型:表示的是元素節點;再比如Text類型;表示的是文本節點;一 DOM類型類型名
Time of Update: 2017-01-19
DOM(Document Object Model)即文件物件模型,針對HTML和XML文檔的API(應用程式介面); DOM描繪了一個層次化的節點樹,運行開發人員可以添加/移除和修改頁面的某一部分;一
Time of Update: 2017-01-19
BOM也叫做瀏覽器物件模型,它提供了很多個物件,用於訪問瀏覽器的功能;這些功能與任何網頁內容無關;BOM缺少規範,每個瀏覽器供應商都按照自己的想法去擴充它,那麼瀏覽器共有對象就成了事實的標準;一 window對象// BOM的核心對象是window,它表示瀏覽器的一個執行個體;// window對象處於JavaScript結構的最頂層;// 對於每個開啟的視窗,系統都會自動為其定義window對象;//
Time of Update: 2017-01-19
源碼下載 源碼我已經上傳到 CSDN 了,無需資源分,下載地址:http://download.csdn.net/detail/zgynhqf/8565873。源碼使用 VS 2013 +TypeScript 1.4 進行開發。開啟後,顯示如下圖:JsTankGame 1.0:老的使用 JS 編寫的坦克遊戲。JsTankGame 2.0:新的使用 TS 直接翻譯過來的遊戲。JsTankGame:在 2.0 的基礎上,對類型進行了重構後的新遊戲。重構步驟 由於老的 JS 遊戲是採用 MS
Time of Update: 2017-01-19
ECMAScript變數包含兩種不同資料類型的值:基本類型值和參考型別值。基本類型值是簡單的資料區段,而參考型別值指那些可能由多個值構成的對象。在將一個值賦給變數時,解析器必須確定這個值是基本類型還是參考型別。基本類型包括如Undefined、Null、Boolean、Number和String,這5種基本類型資料類型是按值訪問的,因此可以操作儲存在變數中的實際的值;參考型別類型的值是儲存在記憶體中的對象。與其他語言不同,JavaScript不允許直接存取記憶體中的位置,也就是說不能直接操作對象
Time of Update: 2017-01-19
ECMAScript的數組與其他語言中的數組有著相當大的區別。雖然ECMAScript中的數組也是有序列表,但是它數組你的每一項可以儲存任何類型的資料。ECMAScript數組的大小是可以動態調整的。 建立數組的基本方式有兩種。第一種是使用Array建構函式,如下所示:複製代碼 代碼如下:var colors = new Array();
Time of Update: 2017-01-19
資料類型 JavaScript中有5種單一資料型別(也稱為基礎資料型別 (Elementary Data Type)):Undefined、Null、Boolean、Number和String。還有1種複雜資料類型——Object,Object本質上是由一組無序的名值對組成的。typeof操作符 介於JavaScript是鬆散類型的,因此需要有一種手段來檢測給定變數的資料類型——typeof就是負責提供者方面資訊的操作符。對一個值使用typeof操作符可能返回下列某個字串:●
Time of Update: 2017-01-19
建立 Date 對象的文法:複製代碼 代碼如下://Date 對象會自動把當前日期和時間儲存為其初始值。new Date();//value-毫秒:代表自世界協調時1970年1月1日00:00:00開始的數值。new Date(value);//dateString-日期文字:表示日期的字串值。此字串應該是在parse方法中識別的格式。new Date(dateString);//year-年:代表年份的整數值。為了避免2000年問題最好指定4位元的年份; 使用1998,
Time of Update: 2017-01-19
概述hasOwnProperty() 方法用來判斷某個對象是否含有指定的自身屬性。文法obj.hasOwnProperty(prop)參數•prop•要檢測的屬性名稱。描述所有繼承了 Object.prototype 的對象都會從原型鏈上繼承到 hasOwnProperty 方法,這個方法可以用來檢測一個對象是否含有特定的自身屬性,和 in 運算子不同,該方法會忽略掉那些從原型鏈上繼承到的屬性。樣本例1:使用 hasOwnProperty
Time of Update: 2017-01-19
String 字串對象1. 介紹 String 對象,對字串進行操作,如:截取一段子串、尋找字串/字元、轉換大小寫等等。2. 定義方式2.1 new String(Value) 建構函式:返回一個內容為Value的String對象參數:①value {String} :字串傳回值:{String對象} 返回一個內容為Value的String對象樣本:複製代碼 代碼如下:var demoStr = new String('abc');console.log(typeof demoStr); //