欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript腳本庫編寫的方法

 更新時間:2015年12月09日 10:13:04   作者:James Li  
本文給大家分享javascript腳本庫編寫的方法,涉及到j(luò)avascript腳本相關(guān)知識,對javascript腳本相關(guān)知識感興趣的朋友一起學習吧

JavaScript就是所謂的客戶端腳本語言,是一種在互聯(lián)網(wǎng)瀏覽器(瀏覽器也稱為Web客戶端,因為它連接到Web服務(wù)器上,以下載頁面)內(nèi)部運行的計算機編程語言。JavaScript的工作方式很有趣。普通網(wǎng)頁內(nèi)都會插入一些JavaScript代碼。當瀏覽器加載該頁面時,瀏覽器的內(nèi)置解釋器將讀取并運行它在該頁面中找到的JavaScript代碼。

做Web開發(fā)已經(jīng)四年,或多或少積累了一些JavaScript腳本。比如,限制input只允許輸入數(shù)字的腳本;敲回車自動轉(zhuǎn)到下一個控件,相當于Tab鍵的作用一樣;因為JavaScript數(shù)值運算的結(jié)果常常不是我們想要的,還得有浮點數(shù)運算(加減乘除)函數(shù)。每次有JavaScript需求時,常常是在網(wǎng)上找需要的腳本,直接拷貝到aspx文件中,或者新建JavaScript文件,然后添加引用
<script src="JScript.js" type="text/javascript"></script> ,以這種方式來完成客戶端腳本的制作。畢竟對JavaScript的需求不多,也就沒有花很大的力氣去學。

最近公司的項目不忙,空閑的時間趕忙補習一下腳本的知識。網(wǎng)上有很流行的JQuery腳本庫,在園子里也有大量的文章討論怎么去用。以我親身體會,JavaScript和正則表達式一樣,常學常忘。學過的知識不用,很快就會忘記。特別是和應(yīng)用相關(guān)的內(nèi)容,比如PageMethods怎么用,客戶短回調(diào)如何實現(xiàn),如何用JavaScript調(diào)用Web服務(wù),在項目中用過多次,但是一被同事問起來,還是模模糊糊的,很難說出個所以然來。我有一個辦法是制作demo,把各種效果的demo做好,分門別類的放在一起,然后用的時候去搜索,這樣可以節(jié)省很多時間。另外一種辦法就是今天這篇文章提到的,把做過的JavaScript整理一下,制作成比較通用的腳本庫,方便復(fù)用。整理的含義是,對函數(shù)進行適當?shù)恼{(diào)整,讓它能不僅能滿足當前項目的需求,還要能滿足未來項目的需求,另一個含義是要規(guī)范命名和組織結(jié)構(gòu),寫好樣例代碼,用起來的時候方便。有時候在網(wǎng)上下載了很多JavaScript實用腳本,但是忘記下載它的測試腳本,不知道怎么去用,還不如到網(wǎng)上重新搜索來得方便。

JavaScript被定義為一種基于對象的腳本語言,一方面它以DOM對象模型和DOM對象中的方法為基礎(chǔ),另一方面,它又不具備面向?qū)ο笳Z言的繼承,多態(tài)的特性。ASP.NET AJAX對JavaScript進行了擴展,使我們可以以面向?qū)ο蟮姆绞絹斫M織JavaScript腳本。我這里的主要工作是封裝,把現(xiàn)有的代碼封裝起來,方便下次復(fù)用。于是,有兩種方法來組織現(xiàn)有的JavaScript代碼庫。
我以JavaScript中倍受爭議的浮點運算中的加法和減法運算為例子,看看如何把它們封裝起來

JavaScript風格

function Math() { } 
//加法 
Math.prototype.Add=function(arg1,arg2){ 
var r1,r2,m; 
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} 
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} 
m=Math.pow(10,Math.max(r1,r2)) 
return (arg1*m+arg2*m)/m 
} 
//減法 
Math.prototype.Subtraction=function(arg1,arg2){ 
  var r1,r2,m,n; 
  try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} 
  try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} 
  m=Math.pow(10,Math.max(r1,r2)); 
  n=(r1>=r2)?r1:r2; 
  return ((arg1*m-arg2*m)/m).toFixed(n); 
} 
調(diào)用方式 
var math=new Math(); 
var result=math.Add(2.0,4.0); 
AJAX風格 
Type.registerNamespace(“Utility”); 
Utility.Math=function(larg,rarg) 
{ 
 this._left=larg; 
 this._right=rarg; 
} 
Utility.Math.prototype= 
{ 
//加法函數(shù) 
Add:function () 
{ 
var r1,r2,m; 
try{r1=left.toString().split(".")[1].length}catch(e){r1=0} 
try{r2=right.toString().split(".")[1].length}catch(e){r2=0} 
m=Math.pow(10,Math.max(r1,r2)) 
return (left*m+right*m)/m 
} 
//減法函數(shù) 
Subtraction: function(){ 
  var r1,r2,m,n; 
  try{r1=left.toString().split(".")[1].length}catch(e){r1=0} 
  try{r2=right.toString().split(".")[1].length}catch(e){r2=0} 
  m=Math.pow(10,Math.max(r1,r2)); 
  n=(r1>=r2)?r1:r2; 
  return ((left*m-right*m)/m).toFixed(n); 
} 
} 
//注冊類 
Utility.Math.registerClass(“Utility.Math”); 
然后,在需要的地方,就可以運用下面的方法調(diào)用 
var math=new Utility.Math(2.0,4.2); 
var result=math.Add(); 

使用上面提出的兩種方法,可以方便封裝常用的JavaScript,減少重復(fù)。

上面的命名有個問題,因為Math是JavaScript內(nèi)置的一種類型,用于處理各種數(shù)學運算,為了讓上面的JavaScript風格的腳本運行起來,還得把類名換成其它的名字,如MathHelper。ASP.NET AJAX還對JavaScript的六種類型進行了擴展,分別是Array,Boolean,Date,Error,Object和string.

方法有了,估計還有朋友會說,你應(yīng)該把自己做的JavaScript庫公布出來才行,這樣才能滿足大眾的口味。僅有這個方法,要實踐起來還是很困難的:有項目時間緊的理由,每天都忙著做項目,哪里有時間去整理這個,也有不熟悉JavaScript的理由。

為了讓我的類庫不至于很菜,我到網(wǎng)上找了些關(guān)于寫好JavaScript庫的建議。

有一篇文章的名字叫《Building a JavaScript Library》,本來寫這篇文章之前很想看看他是怎么寫的,可是網(wǎng)頁中一直提示正在加載文件,無法查看。很想知道老外對于同樣的主題,他是怎么寫的。

還有一篇文章也很精彩,名字是《Rules For JavaScript Library Authors》,地址在
http://dean.edwards.name/weblog/2007/03/rules/

我把它翻譯出來,供大家參考

1 使用方法不要過于繁瑣。
2 避免使用Object.prototype
3 不要做過度的擴展
4  遵守標準。
5  向優(yōu)秀的JavaScript創(chuàng)作者看齊
6  保持靈活可變 7  管理好內(nèi)存,避免內(nèi)存泄露。
8  避免與瀏覽器相關(guān)的hack
9  保持類庫簡潔
10 讓類庫保持可預(yù)知。比如,雖然沒有查看文檔,也應(yīng)該能猜測到Math是處理和數(shù)學運算相關(guān)的內(nèi)容
11 加分的規(guī)則:文檔;盡可能多的使用命名空間組織代碼,使之容易被記?。?/p>

我的水平很一般的,很普通的一個程序員。所以,不要向我要代碼。我給你了,你還要花時間去看;而且我的代碼沒有文檔,你讀不懂怎么辦呢。與其這樣,為何不把你自己手頭有的JavaScript 整理一下,況且你手里頭有的JavaScript ,被你實際用過,你對他肯定熟悉。也不要推薦JQuery,它不是我的目的。
我的目的是教你組織整理現(xiàn)有的JavaScript 腳本庫,把手頭已有資源用好就很不錯了。

測試代碼下載: http://xiazai.jb51.net/201509/yuanma/Math-Test(jb51.net).rar

補充一個常見的問題:如果把JavaScript 放到外部文件中,運行時可能會提示“找不到對象”
這個問題是由文件編碼導(dǎo)致的。要讓JavaScript 腳本文件的編碼和HTML頁面的文件編碼保持一致
點擊文件-->另存為選項,把兩者存儲為同樣的編碼格式

推薦用VS IDE編寫腳本,這樣可以使用IDE提供的智能提示支持

如果是用Dreamweaver編寫腳本,它也提供了智能提示


以上內(nèi)容給大家介紹了JavaScript腳本庫編寫的方法,希望大家喜歡。

相關(guān)文章

  • 你有必要知道的10個JavaScript難點

    你有必要知道的10個JavaScript難點

    10個JavaScript難點,你可能還不知道,不著急,本文為大家一一列出,一一攻破,感興趣的小伙伴們可以參考一下
    2017-07-07
  • layer父頁獲取彈出層輸入框里面的值方法

    layer父頁獲取彈出層輸入框里面的值方法

    今天小編就為大家分享一篇layer父頁獲取彈出層輸入框里面的值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 微信小程序?qū)崿F(xiàn)評價功能

    微信小程序?qū)崿F(xiàn)評價功能

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)評價功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • JS?簡單實現(xiàn)拖拽評星的示例代碼

    JS?簡單實現(xiàn)拖拽評星的示例代碼

    本文主要介紹了JS?簡單實現(xiàn)拖拽評星,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • JS小功能(button選擇顏色)簡單實例

    JS小功能(button選擇顏色)簡單實例

    這篇文章主要介紹了button選擇顏色簡單實例,有需要的朋友可以參考一下
    2013-11-11
  • JavaScript數(shù)組方法實例詳解

    JavaScript數(shù)組方法實例詳解

    本文將通過實例為大家詳細介紹JavaScript中的數(shù)組的所有方法。文中的示例代碼講解詳細,對我們深入了解JavaScript數(shù)組有一定的幫助,需要的可以參考一下
    2021-12-12
  • JavaScript經(jīng)典案例之簡易計算器

    JavaScript經(jīng)典案例之簡易計算器

    這篇文章主要為大家詳細介紹了JavaScript經(jīng)典案例之簡易計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • JavaScript中setTimeout的那些事兒

    JavaScript中setTimeout的那些事兒

    JavaScript中setTimeout的那些事兒到底有什么?setTimeout單線程、延遲時間等,感興趣的小伙伴們可以參考一下
    2016-11-11
  • javascript事件處理模型實例說明

    javascript事件處理模型實例說明

    本文主要介紹IE和火狐在添加刪除事件上的區(qū)別,并給出通用的解決方法,需要的朋友可以參考下。
    2016-05-05
  • JS面試題之如何判斷兩個數(shù)組的內(nèi)容是否相等

    JS面試題之如何判斷兩個數(shù)組的內(nèi)容是否相等

    這篇文章主要為大家詳細介紹了JavaScript面試的??碱},即如何判斷兩個數(shù)組的內(nèi)容是否相等,文中的示例方法講解詳細,需要的小伙伴可以參考一下
    2023-10-10

最新評論