Time of Update: 2017-01-13
一. 裝飾者模式的定義裝飾者模式的定義:動態地給一個對象添加額外的職責,而不會影響從這個類派生的其他對象。二. 裝飾者模式的實現裝飾者模式能夠在不改變對象自身的基礎上,在程式運行期間給對象動態添加職責。在JavaScript的實際實現中,可以將本體對象放到裝飾者對象中,這些對象以一條鏈的方式進行引用,形成一個彙總對象。本體對象和裝飾者對象都擁有相同的介面,當請求到達鏈中的裝飾者對象,這個裝飾者對象會執行自身,隨後將請求轉寄給本體對象。2.1 通過對象覆寫來實現裝飾者模式代碼如下:/* =====
Time of Update: 2017-01-13
在JavaScript中,對對象進行拷貝的情境比較常見。但是簡單的複製語句只能對對象進行淺拷貝,即複製的是一份引用,而不是它所引用的對象。而更多的時候,我們希望對對象進行深拷貝,避免原始對象被無意修改。對象的深拷貝與淺拷貝的區別如下:淺拷貝:僅僅複製對象的引用,而不是對象本身;深拷貝:把複製的對象所引用的全部對象都複製一遍。一. 淺拷貝的實現淺拷貝的實現方法比較簡單,只要使用是簡單的複製語句即可。1.1 方法一:簡單的複製語句/* ================ 淺拷貝 ===========
Time of Update: 2017-01-13
單例模式是一種常見的模式,如果 希望系統中一個類只有一個執行個體 ,那麼單例模式是最好的解決方案。一. 單例模式的定義單例模式的定義: 保證一個類僅有一個執行個體,並提供一個訪問它的全域訪問點。二. 單例模式的實現原理用一個變數來標誌當前是否已經為某個類建立過對象。如果是,則在下一次擷取該類的執行個體時,直接返回之前建立的對象。三. 單例模式的優點單例模式的優點有:記憶體中只有一個對象,節省記憶體空間;避免頻繁銷毀對象,提高效能;避免共用資源多重佔用;可以全域訪問。四.
Time of Update: 2017-01-13
對於一個遊戲開發人員,尋找一個可以與 JavaScript 和 HTML5 無縫工作的遊戲引擎是一個不錯的解決方案。市面上有很多免費和付費的遊戲引擎,讓專業的遊戲開發人員滿意的遊戲引擎肯定需要包含獨特的東西。遊戲開發人員對完美遊戲引擎的追求永遠不會停止。下面我們整理出地球上使用最好的html5和javascript遊戲引擎列表,每個遊戲引擎有每個人想要的特性。每個遊戲引擎有他自己的優缺點,這樣你可以根據你自己的需求做選擇,我確定這個列表中有你在尋找的遊戲引擎1) Canvas
Time of Update: 2017-01-13
Data URI,不是URLURL是uniform resource locator的縮寫,在web中的每一個可訪問資源都有一個URL地址,例如圖片,HTML檔案,js檔案以及style sheet檔案,我們可以通過這個地址去download這個資源。其實URL是URI的子集,URI是uniform resource identifier的縮寫。URI是用於擷取資源,包括其附加的資訊的一種協議。附加資訊可能是地址,也可能不是地址,如果是地址,那麼這時URI就變成URL了。注意的是data
Time of Update: 2017-01-13
今天一個項目中需要判斷IE版本號碼,又因為 jQuery 2.0 去除了對瀏覽器版本號碼的判斷(它推薦特性檢測),於是就看到一老外寫的一段代碼: 代碼如下複製代碼 var _IE = (function(){ var v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i'); while ( &
Time of Update: 2017-01-13
訪問一個給定CSS 值的最基本句法是:object.style.property,如:object.style.backgroundColor= "#ccc"; 不過要是訪問float屬性,可就不一樣了,因為float本身就是js的保留關鍵字,則需要這樣寫:IE:object.style.styleFloat = "left";FF:object.style.cssFloat =
Time of Update: 2017-01-13
這兩天遇到JS對URL的操作,網上查了很多方法,都是直接操作,使用起來很不方便,還有出現很多重複的代碼。於是集百家之嚴,總結了各個方法,把它壓縮成了一個函數對象,只有幾十行代碼,使用方法簡單明了ojbUrl.js 代碼如下複製代碼 /* 說明:本代碼可自由複製修改並且使用,但請保留作者資訊!Author: Kevin WebSite: http://iulog.com/ QQ:251378427JS 操作 URL 函數使用說明:初始化 var
Time of Update: 2017-01-13
前端開發中,應該除非大型團隊對編程有著嚴格的日誌控制和錯誤機制,在小型團隊中的前端使用錯誤與調試還是基本上靠Firebug等調試工具。前端迭代時間短周期也比較短,在這方面也的確是一個欠缺。閱讀了《編寫可維護的JavaScript》書中的第十章 ”拋出自訂錯誤“ 對代碼的書寫和規範還是有一定的啟發。把一些有用的東西作為筆記記下來。錯誤類型:•Error – 基本錯誤類型•EvalError – 通過 eval()
Time of Update: 2017-01-13
很多 WEB 開發人員可能都會碰到這種頭痛的問題,就是當使用者對頁面進行縮小或放大時,原本好好的布局就被破壞了。如果讓網頁支援自適應的縮小和放大布局,對於開發人員來說是一個不小的挑戰。在我看來如果使用者有意識的去對網頁進行縮放,那麼就應該知道縮放會破壞布局。還有很多使用者其實壓根不知道自己是何時對網頁進行了縮放,此時就需要提醒使用者應該將瀏覽器的縮放層級重設成預設的比例。說到瀏覽器的縮放檢測,可能有好幾種方法都可以實現,從檢測 CSS 樣式到檢測 Flash
Time of Update: 2017-01-13
javascript中使用Regex有兩種方式。第一種是構建一個RegExp對象;第二種是使用”//”來定義,也即perl風格。例如: 代碼如下複製代碼 var str = 'http://www.111cn.net/';var reg = new RegExp('http', 'i');alert(reg.test(str));或alert(/http/.test(str));
Time of Update: 2017-01-13
今天做回複框輸入限制時的2個需求:1、文字內容不能全都是空格,用這個正則 /^s*$/2、刪除連續的空格,是這個正則 /s+/g下面是常見的需求代碼 代碼如下複製代碼 <script type="text/javascript"> function is_blank(str){ var reg = /^s*$/; return
Time of Update: 2017-01-13
對一個運算式執行位非(求非)運算。result = ~ expression參數result 任何變數。expression任何錶達式。備忘 所有一元運算子(如 ~ 運算子)都按照下面的規則來計算運算式的值:•如果應用於未定義的運算式或 null 運算式,則會引發一個執行階段錯誤。•將對象轉換為字串。•如果可能,將字串轉換為數字。 否則,將引發執行階段錯誤。•布爾值被視為數字(如果為 false,則為 0;如果為 true,則為
Time of Update: 2017-01-13
JavaScript slice() 方法定義和用法slice() 方法可從已有的數組中返回選定的元素。文法arrayObject.slice(start,end)參數 描述 start 必需。規定從何處開始選取。如果是負數,那麼它規定從數組尾部開始算起的位置。也就是說,-1 指最後一個元素,-2 指倒數第二個元素,以此類推。 end 可選。規定從何處結束選取。該參數是數組片斷結束處的數組下標。如果沒有指定該參數,那麼切分的數組包含從 start
Time of Update: 2017-01-13
JavaScript 支援函數的遞迴調用。所謂遞迴函式,就是在函數體內調用函數本身。使用遞迴函式的一個常見例子就是求階乘。利用遞迴函式求 6! 。 代碼如下複製代碼 <script type="text/javascript">function fact(num){ if (num<=1){ return
Time of Update: 2017-01-13
變數的聲明JavaScript 使用關鍵字 var 來聲明變數,可以先聲明後賦值,也可以在聲明的同時賦值,多個變數同時聲明使用逗號(,)分隔。例如: 代碼如下複製代碼 // 先聲明,後賦值var sex;sex="男";// 聲明的同時進行賦值var age=22;var name="張三";// 同時聲明多個變數var x=1,y=2,z=3; // 聲明多個變數時用逗號( ,)分開其中,sex、age、name ..
Time of Update: 2017-01-13
類似地,我們可以想像,1/3的結果應該是0.3333333333333333。為了得到我們想要的結果,我們需要校正這個值。js中通過parseFloat函數可以把字串轉換成浮點數. 如果要把字串轉換成整數我們可以使用parseInt 函數. 通過parseFloat只能把數字字元轉換成浮點數,不能把字母字元轉換成浮點數。 parseFloat
Time of Update: 2017-01-13
二、判斷一個變數屬於什麼資料類型。1.數值型(number)。數值運算式指的是任何值為數位運算式。這種運算式的元素可以包括關鍵字、變數、文字和運算 符的任意組合,只要此組合能夠產生一個數字。在特定的情況下,如果可以的話,字串也可以被 轉換為數字。比較常用的判斷方法是 代碼如下複製代碼 function isNumber(val){ return typeof val === 'number';} 但有些情況就不行。比如var
Time of Update: 2017-01-13
首先我們拆解為如下代碼JScript code 代碼如下複製代碼 var str = function(){ return 'Hello world'; }
Time of Update: 2017-01-13
例子:我們要實現的效果是當使用者點擊滑鼠的時候,就在舊資料上追加若干新資料。 如果使用標準DOM的話,完整代碼如下: 複製代碼 代碼如下:<html> <head> <title>test</title> </head> <body> <div> <p>data<p> </div> <script> document.onmousedown =