Time of Update: 2018-12-08
Notify & Capture 要實現 notify 和 capture 就太容易了,我們只需要把 capture 傳入的 handler 都儲存下來,然後在 notify 裡面找到匹配的 handler 就可以了。 複製代碼 代碼如下:var filterHandlerBundles = []; Dispatch.capture = function(pattern, handler) { var filter = createFilter(pattern);
Time of Update: 2018-12-08
至於篩選條件的描述,模式比對是一種很常見也很好用的方式。在 JavaScript 裡面,用 JSON 來描述模式又是相當方便的事情,所以我們來做一個 JSON 模式比對工具吧。 用例設計 作為一個 dispatcher ,我們只需要兩個方法: notify 和 capture 。一個最簡單的用例是這樣的: 複製代碼 代碼如下:Dispatcher.capture({ "status": 200, "command": "message" }, function(json) { /*
Time of Update: 2018-12-08
在開發中大家也都會注意盡量使用StringBuilder而不採用普通的字串拼接方式。但是可能大部分開發人員卻忽略了js中也需要注意這種效率問題。 下面進行一項效能測試,用事實來說話! 複製代碼 代碼如下:function xntest(){ var d1=new Date(); var str=""; for(var i=0;i<10000;i++){ str+="stext"; } var d2=new Date();
Time of Update: 2018-12-08
在瀏覽器中,我們一旦把節點添加到document.body(或者其他節點)中,頁面就會更新並反映出這個變化,對於少量的更新,一條條迴圈插入也會運行很好,也是我們常用的方法。代碼如下: 複製代碼 代碼如下:for(var i=0;i<5;i++){ var op = document.createElement("span"); var oText = document.createTextNode(i); op.appendChild(oText);
Time of Update: 2018-12-08
比如: 複製代碼 代碼如下:var anchors = document.getElementsByTagName("a"); for (i = 0; i < anchors.length; i++) { var ele=anchors[i];//取某一個元素 //some code here } 上面的代碼錶示擷取文檔中的所有連結元素,然後遍曆做一些事情。
Time of Update: 2018-12-08
使用類庫可以比較容易的解決相容性問題.但這背後的機理又是如何呢? 下面我們就一點點鋪開來講.首先,DOM Level2為事件處理定義了兩個函數addEventListener和removeEventListener, 這兩個函數都來自於EventTarget介面. 複製代碼 代碼如下:element.addEventListener(eventName, listener, useCapture); element.removeEventListener(eventName, listener,
Time of Update: 2018-12-08
問題: 使得在訪問頁面的時候能夠沿用上次的設定,或者在不同的頁面間共用資料。比如使用者在訪問網站的時候設定了頁面字型的大小,那麼會希望下次訪問的時候仍然能使用同樣的設定進行瀏覽,而不用重複設定。 解決方案: 在使用者瀏覽頁面並進行設定時,將這些設定儲存在cookie中,下次訪問的時候讀取cookie中的設定。 參考下面的指令碼: 複製代碼 代碼如下:// utility function to retrieve an expiration data in proper format;
Time of Update: 2018-12-08
雖然現在慢慢減少了對jQuery的使用(項目上還是用,效率高點。平時基本不用了),希望從而減少對jQuery的依賴度。 但是這鏈式操作的方式實在吸引人(貌似現在不少新庫都採用了鏈式操作)。 新手無畏嘛,所以寫了以下代碼。主要是避免以後又忘了,呵呵。 複製代碼 代碼如下:window.k = function() { return new k.fn.init(arguments); } k.fn = k.prototype = { init:function() { this.length = 0
Time of Update: 2018-12-08
代碼依然簡單。所以依然沒什麼好解釋的。。 複製代碼 代碼如下:/** KOverLoad 一個建立重載函數的輔助方法。 補充上次的函數。 @Author ake 2010-07-03 @weblog http://www.cnblogs.com/akecn */ var KOverLoad = function(scope) { this.scope = scope || window; //預設添加方法到這個對象中。同時添加的方法的this指向該對象。 this.list = {};
Time of Update: 2018-12-08
windows對象 每個HTML文檔的頂層對象. 屬性 frames[] 子楨數組.每個子楨數組按來源文件中定義的順序存放. feames.length 子楨個數. self 當前視窗. parent 父視窗(當前視窗是中一個子視窗). top 頂層視窗(是所有可見視窗的父視窗). status 瀏覽器狀態視窗上的訊息. defaultStatus 當status無效時,出現在瀏覽器狀態視窗上的預設訊息. name
Time of Update: 2018-12-08
如果你真正理解Javascript函數是如何調用工作的,那麼就可以避免一些bug的發生; 首先讓我們建立一個簡單的函數,這個函數將在下文中使用,這個函數僅僅返回當前的this的值和兩個提供的參數. 複製代碼 代碼如下:function makeArray(arg1, arg2){ return [ this, arg1, arg2 ]; } 調用這個函數非常的簡單,我們需要做的僅僅是: 複製代碼 代碼如下:makeArray('one', 'two'); 傳回值:=> [ window,
Time of Update: 2018-12-08
預設情況下,產生的頁面代碼可能與下面的代碼類似: 複製代碼 代碼如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head>
Time of Update: 2018-12-08
1、簡單形式的封裝調用 複製代碼 代碼如下:var userName = function() { return "jeff wong" } (); alert(userName); 上面的代碼確實簡單,我們可以逐步分解成下面的寫法: 複製代碼 代碼如下:var anonymousFunc = function() { return "jeff wong" }; //匿名函數 var name = anonymousFunc(); //執行該函數 返回人名 alert(name); 2、new
Time of Update: 2018-12-08
複製代碼 代碼如下:<script type="text/javascript"> var test = { numA: 10, objB: {}, arrC: [], init: function(){ alert(this.numA); }, sayHi: function(name){ alert("hello " + name); }, sayHelloWorld: function(){ this.sayHi("world"); }, get: function(){
Time of Update: 2018-12-08
(1)OnKeyPress 事件驗證 用來驗證輸入操作 複製代碼 代碼如下:function OnKeyPressValidate(obj, event, len) { var e = window.event || event; var key = e.keyCode ? e.keyCode : e.which; var selectedText = ""; if (window.getSelection) { var st = obj.selectionStart; var ed =
Time of Update: 2018-12-08
本文承接上一篇JavaScript物件導向編程(1) 基礎。 上篇說過,JavaScript沒有類的概念,需要通過函數來實作類別的定義。先通過一個例子說明: 複製代碼 代碼如下:function myClass() { var id = 1; var name = "johnson"; //properties this.ID = id; this.Name = name; //method this.showMessage = function() { alert("ID: " + this.
Time of Update: 2018-12-08
一、字元類 概念: 將單獨的直接量字元放進方括弧內就可以組合成字元類(character class)。 註:紅色表示不是特別清楚的 [...] ——表示字元類中任意一個字元都滿足 [^...]——除字元類中的任意一個字元都滿足 .——除分行符號(\n)和Unicode終止符之外的任一字元(不知道有什麼用?) \w——(word)任何ASCII單字字元,==[a-zA-Z0-9]
Time of Update: 2018-12-08
javascript中本沒有命名空間的概念,但是要體現物件導向的思想, 應當有命名空間,就像java中的package,.net中的namespace一樣, 作用主要為了防止類名衝突,相同的類名只要屬於不同的命名空間,便不會衝突。 最簡單建立命名空間的方法: 複製代碼 代碼如下:var java = {}; java.util = {}; //這樣就建立成功了命名空間:java.util //我們可以在java.util下面加類(函數),屬性,或對象 java.util.HashMap
Time of Update: 2018-12-08
一,概述在Java語言中,我們可以定義自己的類,並根據這些類建立對象來使用,在Javascript中,我們也可以定義自己的類,例如定義User類、Hashtable類等等。目前在Javascript中,已經存在一些標準的類,例如Date、Array、RegExp、String、Math、Number等等,這為我們編程提供了許多方便。但對於複雜的用戶端程式而言,這些還遠遠不夠。與Java不同,Java2提供給我們的標準類很多,基本上滿足了我們的編程需求,但是Javascript提供的標準類很少,許
Time of Update: 2018-12-08
你所建立的所有函數都是區分大小寫 單引號('字串')和雙引號("字串")在JavaScript中沒有特殊的區別,都可以用來建立字串.但作為一般原則,大多數WEB開發人員都選擇使用單引號 而不是雙引號,因為XHTML規範要求所有XHTML 屬性值都必須使用雙引號括起來. JavaScript不支援重載,在JavaScript中,指令碼在執行時不會顧及函數定義時的參數,而是直接使用在範圍鏈中最後定義的那個函數。這意味著,相同名稱的函數永遠只存在一個執行個體