Time of Update: 2017-01-19
現在也有很多JS動態載入的架構,比如In.js。但是這種並不是我想要的編寫方式,我來說說我的想法。 先來一段java代碼 複製代碼 代碼如下: import Biz.User; User u = new User(); u.show(); 按流程就是導包、執行個體化、調用。 JS是做不了導包的,或者說代碼意義上的導包,一般只是在頁面上進行script標籤的引入。 那麼 先假設需要寫成這樣 複製代碼 代碼如下: Using("User"); var u = new User(); u.show(
Time of Update: 2017-01-19
複製代碼 代碼如下: <!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> <meta http-equiv="Content-Type"
Time of Update: 2017-01-19
一、錯誤分類 1、語法錯誤:也稱解析錯誤,發生在傳統語言的編譯時間,在JavaScript中發生在解釋時。這些錯誤是由代碼中的意外字元直接引起的,然後就不能直接編譯/解釋。發生語法錯誤時,就不能繼續執行代碼。在JavaScript中,只有在同一個線程中的代碼會受語法錯誤的影響。在其他線程中的代碼和其他外部參考的檔案中的代碼,如果不依賴於包含錯誤的代碼,則可以繼續執行。
Time of Update: 2017-01-19
排序代碼 複製代碼 代碼如下: function SortTable(sTableID, iCol, sDataType){ this.oTable=document.getElementById(sTableID); this.oTBody=this.oTable.tBodies[0]; this.colDataRows=this.oTBody.rows; this.aTRs=[]; this.iCol=iCol; this.sDataType=sDataType; }
Time of Update: 2017-01-19
跨平台的事件EventUtil對象 EventUtil: 複製代碼 代碼如下: var EventUtil={ addEventHandler:function(oTarget, sEventType, fnHandler){ if(oTarget.addEventListener){ oTarget.addEventListener(sEventType,fnHandler,false); } else if(oTarget.attachEvent){
Time of Update: 2017-01-19
一、事件流 IE中是冒泡型事件,即從最特定的事件目標到最不特定的事件目標。 Netscape Navigator使用的是捕獲型事件,這個跟IE中採用的冒泡型事件相反。 DOM事件流同時支援兩種事件模型,但捕獲型事件先發生。 二、事件處理函數/監聽函數 事件是使用者或瀏覽器自身進行的特定行為。這些事件都有自己的名字,如click、load、mouseover等。 事件處理函數有兩種分配方式:在JavaScript中或者在HTML中。
Time of Update: 2017-01-19
檢測瀏覽器的方式 1、對象特徵檢測法:判斷瀏覽器能力的通用方法。如果更關注瀏覽器的能力而不在乎它的實際身份,就可以使用這種檢測方法。常見的原生Ajax寫法中就用這種方法來建立XMLHttpRequest: 複製代碼 代碼如下: IXHR: function(){ if(window.ActiveXObject){ XHR=new ActiveXObject('Microsoft.XMLHTTP'); }else if(window.XMLHttpRequest){ XHR=new
Time of Update: 2017-01-19
Window對象 視窗操作 Window對象對操作瀏覽器視窗非常有用,開發人員可以移動或調整瀏覽器視窗的大小。可用四種方法實現這些操作: moveBy(dx,dy):把瀏覽器視窗相對當前位置水平移動dx個像素,垂直移動dy個像素。dx值為負左移,dy為負上移。 moveTo(x,y):行動瀏覽器視窗,使它的左上方位於使用者螢幕的(x,y)處。可以使用負數,不過這樣會把部分視窗移出螢幕的可視地區。 resizeBy(dw,dh):相對瀏覽器視窗當前大小,把視窗的寬度調整dw個像素,
Time of Update: 2017-01-19
繼承 繼承是物件導向語言的必備特徵,即一個類能夠重用另一個類的方法和屬性。在JavaScript中繼承方式的實現方式主要有以下五種:對象冒充、call()、apply()、原型鏈、混合方式。 下面分別介紹。 對象冒充 原理:建構函式使用this關鍵字給所有屬性和方法賦值。因為建構函式只是一個函數,所以可以使ClassA的建構函式成為ClassB的方法,然後調用它。ClassB就會收到ClassA的建構函式中定義的屬性和方法。 樣本: 複製代碼 代碼如下: function
Time of Update: 2017-01-19
工廠方式 建立並返回特定類型的對象。 複製代碼 代碼如下: function createCar(sColor,iDoors,iMpg){ var oTempCar=new Object(); oTempCar.color=sColor; oTempCar.doors=iDoors; oTempCar.mpg=iMpg; oTempCar.showColor=function(){ alert(this.color); } return oTempCar; } 調用樣本:
Time of Update: 2017-01-19
Math對象的屬性 E:值e,自然對數的底 LN10:10的自然對數 LN2:2的自然對數 LOG2E:以2為底E的對數 LOG10E:以10為底E的對數 PI:值派 SQRT1_2:1/2 的平方根 SQRT2:2的平方根 Math對象的方法:最大值與最小值 min()&&max()用於取一組數中的最小值跟最大值。 樣本: 複製代碼 代碼如下: var iMax=Math.Max(1,2,3); alert(iMax);//outputs 3 var iMin=Math.Min(1,2,3);
Time of Update: 2017-01-19
1、邏輯非 邏輯非用!表示,可以應用與ECMAScript的任何類型的值,邏輯非操作返回的是一個布爾值(true/false)。該操作符首先會將它的運算元轉換為一個布爾值,然後再對其求反。 下面說明下Boolean()轉型函數的一組規則。 資料類型轉換為true的值轉換為false的值BooleantruefalseString 任何非Null 字元串""(Null
Time of Update: 2017-01-19
一、變數 •全域變數 JavaScript的兩個特徵,不自覺地建立出全域變數是出乎意料的容易。首先,你可以甚至不需要聲明就可以使用變數;第二,JavaScript有隱含的全域概念,意味著你不聲明的任何變數都會成為一個全域對象屬性(不是真正意義上的全域變數,可以用delete刪除) 複製代碼 代碼如下: function sum(x,y) { // result 未聲明,為隱式全域變數 result = x + y; return result; } function foo() {
Time of Update: 2017-01-19
局部變數也就可以理解為在函數內部定義的變數,很明顯訪問局部變數要比域外的變數要快,因為它位於範圍鏈的第一個變數對象中(關於範圍鏈的介紹可以閱讀這篇文章)。變數在範圍鏈的位置越深,訪問所需要的時間就越長,全域變數總是最慢的,因為它們位於範圍鏈的最後一個變數對象。 每種資料類型的訪問都需要付出點效能代價,對於直接量和局部變數基本都能消費得起,而訪問數組項和對象成員則要代價高點。下圖顯示了不同瀏覽器,分別對這四種資料類型進行了200'000次操作所用的時間。
Time of Update: 2017-01-19
1.1.1 摘要 相信有C++、C#或Java等編程經驗的各位,對於this關鍵字再熟悉不過了。由於Javascript是一種物件導向的程式設計語言,它和C++、C#或Java一樣都包含this關鍵字,接下來我們將向大家介紹Javascript中的this關鍵字。 本文目錄 全域代碼中的this 函數中的this 參考型別 函數調用以及非參考型別 參考型別以及this的null值 函數作為構造器被調用時this的值 手動設定函數調用時this的值 1.1.2 本文
Time of Update: 2017-01-19
複製代碼 代碼如下: isNull: function(a){ return a === null; }, isUndefined: function(a){ return a === undefined; }, isNumber: function(a){ return typeof a === 'number'; }, isString: function(a){ return typeof a === 'string'; }, isBoolean: function(a){ return
Time of Update: 2017-01-19
一,for迴圈的基本寫法 代碼如下: 複製代碼 代碼如下: //例一for(var i=1;i<=10;i++) { alert(i); } 這段代碼太簡單了,我都不好意思拿出手。代碼的執行結果是依次彈出1到10,PS:在早期的IE如IE6中,你把10改成10000,就能讓使用者一直點確定什麼也不能幹了哈哈——不要說是我出的主意。 由於這是一篇基礎課程,所以我們迴歸正題來詳細分析一下這段代碼吧。 for迴圈的結構都是類似的,任意一個for迴圈都是這樣的: for(開始前;迴圈進行的條件;
Time of Update: 2017-01-19
•類比塊級範圍 大家都知道在JavaScript中沒有塊級範圍的概念,我們可以通過使用閉包來類比實現塊級範圍,看下面的樣本: 複製代碼 代碼如下: (function () { for (var i = 0; i < 10; i++) { //Do Nothing } alert(i); //輸出10 })(); 第6行可以訪問到for迴圈塊中的變數i,如果我們稍微修改以上代碼,把for迴圈塊放置在閉包中,情況就不一樣了: 複製代碼 代碼如下: (function () {
Time of Update: 2017-01-19
Daniel Clifford 在 Google I/O 2012 上做了一個精彩的演講“Breaking the JavaScript Speed Limit with V8”。在演講中,他深入解釋了13個簡單的代碼最佳化方法,可以讓你的代碼在 Chrome 的 V8 JavaScript 引擎編譯/運行你的 JavaScript 代碼更加快速。在演講中,他解釋了怎麼最佳化,並且解釋了原因。下面簡明的列出了最佳化的要點: 1. 在建構函式中初始化所有的對象 2.
Time of Update: 2017-01-19
首先建立html頁面為sort.html ,並把下面的內容複寫進去 複製代碼 代碼如下: <!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> <meta http-