中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
javascript

javascript

求助編輯百科名片

Javascript是一種由NetscapeLiveScript發(fā)展而來(lái)的原型化繼承的面向?qū)ο?/a>的動(dòng)態(tài)類型的區(qū)分大小寫的客戶端腳本語(yǔ)言,主要目的是為了解決服務(wù)器端語(yǔ)言,比如Perl,遺留的速度問(wèn)題,為客戶提供更流暢的瀏覽效果。當(dāng)時(shí)服務(wù)端需要對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證,由于網(wǎng)絡(luò)速度相當(dāng)緩慢,只有28.8kbps,驗(yàn)證步驟浪費(fèi)的時(shí)間太多。于是Netscape的瀏覽器Navigator加入了Javascript,提供了數(shù)據(jù)驗(yàn)證的基本功能。

目錄

基本概念
  1. 1、運(yùn)算符
  2. 2、表達(dá)式
  3. 3、語(yǔ)句
  4. 4、函數(shù)
  5. 5、對(duì)象
  6. 6、事件
  7. 7、變量
基本特點(diǎn)
開(kāi)發(fā)工具
  1. 測(cè)試
  2. 調(diào)試
  3. HTTP監(jiān)控
  4. 文件
  5. 壓縮
  6. 格式化
  7. 編輯程序&集成開(kāi)發(fā)環(huán)境
  8. 其它工具
  9. 其它瀏覽器擴(kuò)展
使用技巧
  1. 直接方式
  2. 引用方式
  3. 腳本的調(diào)試
相關(guān)概念
  1. 面向?qū)ο笮?/a>
  2. Javascript庫(kù)
  3. 與Java的不同
  4. 與JScript不同
  5. 其他腳本語(yǔ)言的關(guān)系
  6. 與DOM的關(guān)系
  7. 進(jìn)階技術(shù)AJAX
其他
  1. 編寫第一個(gè)JavaScript程序
  2. 提升JavaScript的運(yùn)行速度
  3. 常用的javascript庫(kù)
版本歷史
版本標(biāo)準(zhǔn)
歷史沿革
常見(jiàn)問(wèn)題(FQA)
  1. JavaScript是Java的變種嗎
  2. JavaScript與JScript相同嗎?
  3. JavaScript是一門簡(jiǎn)單的語(yǔ)言嗎?
基于JavaScript框架
  1. Jquery
  2. Ext
  3. prototype
展開(kāi)
基本概念
  1. 1、運(yùn)算符
  2. 2、表達(dá)式
  3. 3、語(yǔ)句
  4. 4、函數(shù)
  5. 5、對(duì)象
  6. 6、事件
  7. 7、變量
基本特點(diǎn)
開(kāi)發(fā)工具
  1. 測(cè)試
  2. 調(diào)試
  3. HTTP監(jiān)控
  4. 文件
  5. 壓縮
  6. 格式化
  7. 編輯程序&集成開(kāi)發(fā)環(huán)境
  8. 其它工具
  9. 其它瀏覽器擴(kuò)展
使用技巧
  1. 直接方式
  2. 引用方式
  3. 腳本的調(diào)試
相關(guān)概念
  1. 面向?qū)ο笮?/a>
  2. Javascript庫(kù)
  3. 與Java的不同
  4. 與JScript不同
  5. 其他腳本語(yǔ)言的關(guān)系
  6. 與DOM的關(guān)系
  7. 進(jìn)階技術(shù)AJAX
其他
  1. 編寫第一個(gè)JavaScript程序
  2. 提升JavaScript的運(yùn)行速度
  3. 常用的javascript庫(kù)
版本歷史
版本標(biāo)準(zhǔn)
歷史沿革
常見(jiàn)問(wèn)題(FQA)
  1. JavaScript是Java的變種嗎
  2. JavaScript與JScript相同嗎?
  3. JavaScript是一門簡(jiǎn)單的語(yǔ)言嗎?
基于JavaScript框架
  1. Jquery
  2. Ext
  3. prototype
展開(kāi)

編輯本段基本概念

  JavaScript[1]是一種基于對(duì)象和事件驅(qū)動(dòng)并具有相對(duì)安全性的客戶端腳本語(yǔ)言。同時(shí)也是一種廣泛用于客戶端Web開(kāi)發(fā)的腳本語(yǔ)言,常用來(lái)給HTML網(wǎng)頁(yè)添加動(dòng)態(tài)功能,比如響應(yīng)用戶的各種操作。它最初由網(wǎng)景公司的Brendan Eich設(shè)計(jì),是一種動(dòng)態(tài)、弱類型、基于原型的語(yǔ)言,內(nèi)置支持類。JavaScript是Sun公司的注冊(cè)商標(biāo)。[1] Ecma國(guó)際以JavaScript為基礎(chǔ)制定了ECMAScript標(biāo)準(zhǔn)。JavaScript也可以用于其他場(chǎng)合,如服務(wù)器端編程。完整的JavaScript實(shí)現(xiàn)包含三個(gè)部分:ECMAScript,文檔對(duì)象模型,字節(jié)順序記號(hào)?!?
  Netscape公司在最初將其腳本語(yǔ)言命名為L(zhǎng)iveScript。在Netscape在與Sun合作之后將其改名為JavaScript。JavaScript最初受Java啟發(fā)而開(kāi)始設(shè)計(jì)的,目的之一就是“看上去像Java”[2],因此語(yǔ)法上有類似之處,一些名稱和命名規(guī)范也借自Java。但JavaScript的主要設(shè)計(jì)原則源自Self和Scheme[3].JavaScript與Java名稱上的近似,是當(dāng)時(shí)網(wǎng)景為了營(yíng)銷考慮與Sun公司達(dá)成協(xié)議的結(jié)果。為了取得技術(shù)優(yōu)勢(shì),微軟推出了JScript來(lái)迎戰(zhàn)JavaScript的腳本語(yǔ)言。為了互用性,Ecma國(guó)際(前身為歐洲計(jì)算機(jī)制造商協(xié)會(huì))創(chuàng)建了ECMA-262標(biāo)準(zhǔn)(ECMAScript)?,F(xiàn)在兩者都屬于ECMAScript的實(shí)現(xiàn)。盡管JavaScript作為給非程序人員的腳本語(yǔ)言,而非作為給程序人員的編程語(yǔ)言來(lái)推廣和宣傳,但是JavaScript具有非常豐富的特性。
  目前javascript的最新版本為1.9版。

1、運(yùn)算符

  運(yùn)算符就是完成操作的一系列符號(hào),它有七類:
  賦值運(yùn)算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=)、算術(shù)運(yùn)算符(+,-,*,/,++,--,%)、比較運(yùn)算符(>,<,<=,>=,==,===,!=,!==)、邏輯運(yùn)算符(||,&&,!)、條件運(yùn)算(?:)、位移運(yùn)算符(|,&,<<,>>,~,^)和字符串運(yùn)算符(+)。
  !==是不全等于符號(hào)。
  可能很多人不知道"==="是什么。在這里,我為大家解釋一下,在JavaScript中,“==="是全同運(yùn)算符,只有當(dāng)值相等,數(shù)據(jù)類型也相等時(shí)才成立。
  等同運(yùn)算符的比較規(guī)則:
  當(dāng)兩個(gè)運(yùn)算數(shù)的類型不同時(shí):將他們轉(zhuǎn)換成相同的類型。
  1)一個(gè)數(shù)字與一個(gè)字符串,字符串轉(zhuǎn)換成數(shù)字之后,進(jìn)行比較。
  2)true轉(zhuǎn)換為1、false轉(zhuǎn)換為0,進(jìn)行比較。
  3)一個(gè)對(duì)象、數(shù)組、函數(shù)與 一個(gè)數(shù)字或字符串,對(duì)象、數(shù)組、函數(shù)轉(zhuǎn)換為原始類型的值,然后進(jìn)行比較。(先使用valueOf,如果不行就使用toString)
  4)其他類型的組合不相等。
  想兩個(gè)運(yùn)算數(shù)類型相同,或轉(zhuǎn)換成相同類型后:
  1)2個(gè)字符串:同一位置上的字符相等,2個(gè)字符串就相同。
  2)2個(gè)數(shù)字:2個(gè)數(shù)字相同,就相同。如果一個(gè)是NaN,或兩個(gè)都是NaN,則不相同。
  3)2個(gè)都是true,或者2個(gè)都是false,則相同。
  4)2個(gè)引用的是同一個(gè)對(duì)象、函數(shù)、數(shù)組,則他們相等,如果引用的不是同一個(gè)對(duì)象、函數(shù)、數(shù)組,則不相同,即使這2個(gè)對(duì)象、函數(shù)、數(shù)組可以轉(zhuǎn)換成完全相等的原始值。
  5)2個(gè)null,或者2個(gè)都是未定義的,那么他們相等。
  而“===”是全同運(yùn)算符,全同運(yùn)算符遵循等同運(yùn)算符的比較規(guī)則,但是它不對(duì)運(yùn)算數(shù)進(jìn)行類型轉(zhuǎn)換,當(dāng)兩個(gè)運(yùn)算數(shù)的類型不同時(shí),返回false;只有當(dāng)兩個(gè)運(yùn)算數(shù)的類型相同的時(shí)候,才遵循等同運(yùn)算符的比較規(guī)則進(jìn)行比較。
  例如:null==undefined 會(huì)返回真, 但是null===undefined 就會(huì)返回假!

2、表達(dá)式

  運(yùn)算符和操作數(shù)的組合稱為表達(dá)式,通常分為四類:賦值表達(dá)式、算術(shù)表達(dá)式、布爾表達(dá)式和字符串表達(dá)式。

3、語(yǔ)句

  JavaScript程序是由若干語(yǔ)句組成的,語(yǔ)句是編寫程序的指令。JavaScript提供了完整的基本編程語(yǔ)句,它們是:
  賦值語(yǔ)句、switch選擇語(yǔ)句、while循環(huán)語(yǔ)句、for循環(huán)語(yǔ)句、for each循環(huán)語(yǔ)句、do...while循環(huán)語(yǔ)句、break循環(huán)中止語(yǔ)句、continue循環(huán)中斷語(yǔ)句、with語(yǔ)句、try…catch語(yǔ)句、if語(yǔ)句(if..else,if…else if…)。

4、函數(shù)

  函數(shù)是命名的語(yǔ)句段,這個(gè)語(yǔ)句段可以被當(dāng)作一個(gè)整體來(lái)引用和執(zhí)行。使用函數(shù)要注意以下幾點(diǎn):
  1)函數(shù)由關(guān)鍵字function定義(也可由Function構(gòu)造函數(shù)構(gòu)造)
  2)使用function關(guān)鍵字定義的函數(shù)在一個(gè)作用域內(nèi)是可以在任意處調(diào)用的(包括定義函數(shù)的語(yǔ)句前);而用var關(guān)鍵字定義的必須定義后才能被調(diào)用
  3)函數(shù)名是調(diào)用函數(shù)時(shí)引用的名稱,它對(duì)大小寫是敏感的,調(diào)用函數(shù)時(shí)不可寫錯(cuò)函數(shù)名
  4)參數(shù)表示傳遞給函數(shù)使用或操作的值,它可以是常量,也可以是變量,也可以是函數(shù),在函數(shù)內(nèi)部可以通過(guò)arguments對(duì)象(arguments對(duì)象是一個(gè)偽數(shù)組,屬性callee引用被調(diào)用的函數(shù))訪問(wèn)所有參數(shù)
  5)return語(yǔ)句用于返回表達(dá)式的值。
  6)yield語(yǔ)句扔出一個(gè)表達(dá)式,并且中斷函數(shù)執(zhí)行直到下一次調(diào)用next。
  一般的函數(shù)都是以下格式:
  function myFunction(params){
  //執(zhí)行的語(yǔ)句
  }
  函數(shù)表達(dá)式:
  var myFunction=function(params){
  //執(zhí)行的語(yǔ)句
  }
  var myFunction = function(){
  //執(zhí)行的語(yǔ)句
  }
  myFunction();//調(diào)用函數(shù)
  匿名函數(shù),它常作為參數(shù)在其他函數(shù)間傳遞:
  window.addEventListener('load',function(){
  //執(zhí)行的語(yǔ)句
  },false);

5、對(duì)象

  JavaScript的一個(gè)重要功能就是面向?qū)ο蟮墓δ?,通過(guò)基于對(duì)象的程序設(shè)計(jì),可以用更直觀、模塊化和可重復(fù)使用的方式進(jìn)行程序開(kāi)發(fā)。
  一組包含數(shù)據(jù)的屬性和對(duì)屬性中包含數(shù)據(jù)進(jìn)行操作的方法,稱為對(duì)象。比如要設(shè)定網(wǎng)頁(yè)的背景顏色,所針對(duì)的對(duì)象就是document,所用的屬性名是bgcolor,如document.bgcolor="blue",就是表示使背景的顏色為藍(lán)色。

6、事件

  用戶與網(wǎng)頁(yè)交互時(shí)產(chǎn)生的操作,稱為事件。事件可以由用戶引發(fā),也可能是頁(yè)面發(fā)生改變,甚至還有你看不見(jiàn)的事件(如Ajax的交互進(jìn)度改變)。絕大部分事件都由用戶的動(dòng)作所引發(fā),如:用戶按鼠標(biāo)的按鍵,就產(chǎn)生click事件,若鼠標(biāo)的指針在鏈接上移動(dòng),就產(chǎn)生mouseover事件等等。在JavaScript中,事件往往與事件處理程序配套使用。
  而對(duì)事件的處理,W3C的方法是用addEventListener()函數(shù),它有三個(gè)參數(shù):事件,引發(fā)的函數(shù),是否使用事件捕捉。為了安全性,建議將第三個(gè)參數(shù)始終設(shè)置為false
  傳統(tǒng)的方法就是定義元素的on…事件,它就是W3C的方法中的事件參數(shù)前加一個(gè)“on”。而IE的事件模型使用attachEvent和dettachEvent對(duì)事件進(jìn)行綁定和刪除。JavaScript中事件還分捕獲和冒泡兩個(gè)階段,但是傳統(tǒng)綁定只支持冒泡事件。

7、變量

  如 var myVariable = "some value";
  變量有它的類型,上例中myVariable的類型為string(字符串)
  javascript支持的常用類型還有:
  object:對(duì)象
  array:數(shù)組
  number:數(shù)
  boolean:布爾值,只有true和false兩個(gè)值,是所有類型中占用內(nèi)存最少的
  null:一個(gè)空值,唯一的值是null
  undefined:沒(méi)有定義和賦值的變量
  實(shí)際上JavaScript的變量是弱變量類型,你賦值給他的是字符串,他就是String .
  是數(shù)字他就是整型。是true和false他就是boolean型(注意,不能加引號(hào),不然會(huì)被當(dāng)成字符串處理)。[2]

編輯本段基本特點(diǎn)

  能夠具有交互性,能夠包含更多活躍的元素,就有必要在網(wǎng)頁(yè)中嵌入其它的技術(shù)。如:Javascript、VBScript、Document Object Model(DOM,文檔對(duì)象模型)、Layers和Cascading Style Sheets(CSS,層疊樣式表),這里主要講Javascript。那么Javascript是什么東東?Javascript就是適應(yīng)動(dòng)態(tài)網(wǎng)頁(yè)制作的需要而誕生的一種新的編程語(yǔ)言,如今越來(lái)越廣泛地使用于Internet網(wǎng)頁(yè)制作上。Javascript是由 Netscape公司開(kāi)發(fā)的一種腳本語(yǔ)言(scripting language),或者稱為描述語(yǔ)言。在HTML基礎(chǔ)上,使用Javascript可以開(kāi)發(fā)交互式Web網(wǎng)頁(yè)。Javascript的出現(xiàn)使得網(wǎng)頁(yè)和用戶之間實(shí)現(xiàn)了一種實(shí)時(shí)性的、動(dòng)態(tài)的、交互性的關(guān)系,使網(wǎng)頁(yè)包含更多活躍的元素和更加精彩的內(nèi)容。運(yùn)行用Javascript編寫的程序需要能支持Javascript語(yǔ)言的瀏覽器。Netscape公司 Navigator 3.0以上版本的瀏覽器都能支持Javascript程序,微軟公司Internet Explorer 3.0以上版本的瀏覽器基本上支持Javascript。微軟公司還有自己開(kāi)發(fā)的Javascript,稱為JScript。Javascript和Jscript基本上是相同的,只是在一些細(xì)節(jié)上有出入。 Javascript短小精悍,又是在客戶機(jī)上執(zhí)行的,大大提高了網(wǎng)頁(yè)的瀏覽速度和交互能力。 同時(shí)它又是專門為制作Web網(wǎng)頁(yè)而量身定做的一種簡(jiǎn)單的編程語(yǔ)言。
  JavaScript 使網(wǎng)頁(yè)增加互動(dòng)性。JavaScript 使有規(guī)律地重復(fù)的HTML文段簡(jiǎn)化,減少下載時(shí)間。JavaScript 能及時(shí)響應(yīng)用戶的操作,對(duì)提交表單做即時(shí)的檢查,無(wú)需浪費(fèi)時(shí)間交由CGI 驗(yàn)證。JavaScript 的特點(diǎn)是無(wú)窮無(wú)盡的,只要你有創(chuàng)意。

編輯本段開(kāi)發(fā)工具

  在今天網(wǎng)絡(luò)開(kāi)發(fā)方面,JavaScript起了很關(guān)鍵的作用;像jQuery, MooTools, Prototype等等JavaScript框架以及其它JavaScript類庫(kù)讓我們的生活輕松了不少。但是隨著Rich Internet Applications(RIA)的面世及迅速應(yīng)用,書寫更強(qiáng)大,更堅(jiān)實(shí)可靠的JavaScript的需要日益迫切。
  javascript程序是純文本的,且不需要編譯,所以任何純文本的編輯器都可以編輯javascript文件。

測(cè)試

  JSLint –JavaScript的驗(yàn)證器
  JSLint取得一個(gè)JavaScript源代碼并對(duì)其掃描。如果發(fā)現(xiàn)問(wèn)題,它送回信息描述問(wèn)題狀況及在源代碼中的大概位置。問(wèn)題不一定就出在句法上,不過(guò)常常正是這里出錯(cuò)。JSLint查看一些風(fēng)格約定和結(jié)構(gòu)問(wèn)題,它證明不了程序是否正確。它只是提供了另一雙眼睛來(lái)幫助發(fā)現(xiàn)問(wèn)題。
  JsUnit
  JsUnit是一個(gè)客戶端(內(nèi)瀏覽器)JavaScript單元測(cè)試框架。它其實(shí)是JUnit給JavaScript的一個(gè)口岸。其中還有一個(gè)平臺(tái)來(lái)在多個(gè)瀏覽器上以及運(yùn)行不同操作系統(tǒng)的多個(gè)機(jī)器上的自動(dòng)執(zhí)行測(cè)試。
  YUI Test
  YUI Test是一個(gè)測(cè)試框架,它針對(duì)基于瀏覽器的JavaScript解決方案。你可以用YUI Test在JavaScript 解決方案上輕松添加單元測(cè)試。
  Obtrusive JavaScript Checker
  可作為Firefox擴(kuò)展,Greasemonkey用戶腳本,以及Ubiquity命令;Obtrusive JavaScript Checker是一種可以掃過(guò)頁(yè)面上所有元素的工具,發(fā)現(xiàn)帶有行內(nèi)事件的HTML元素(這是有危害性的,JavaScript應(yīng)該是不張揚(yáng)的)時(shí),它給這部分加紅邊使其凸顯?!?
  Crosscheck
  Crosscheck是一個(gè)開(kāi)源測(cè)試框架,驗(yàn)證內(nèi)瀏覽器JavaScript代碼。它幫助你確保代碼可以在Internet Explorer和Firefox等種種不同的瀏覽器上運(yùn)行,而這些瀏覽器都不需要安裝。
  JSLitmus
  JSLitmus是一個(gè)輕量級(jí)工具用來(lái)制作JavaScript的特定標(biāo)準(zhǔn)測(cè)試。
  JavaScriptMVC的測(cè)試插件
  JavaScriptMVC的測(cè)試庫(kù)提供事件模擬,單元測(cè)試,Ajax 夾具,和一個(gè)控制臺(tái)程序。

調(diào)試

  Javascript調(diào)試工具包
  JavaScript調(diào)試工具包是一種跨瀏覽器調(diào)試JavaScript的eclipse plugin,它可以在IE,Firefox,Safari,Chrome,Opera甚至是移動(dòng)瀏覽器上調(diào)試JavaScript。
  Firebug
  作為最受歡迎的網(wǎng)頁(yè)開(kāi)發(fā)程序工具,F(xiàn)irebug是Firefox的一個(gè)插件,可以用它在任何網(wǎng)頁(yè)上現(xiàn)時(shí)編輯,調(diào)試和監(jiān)控CSS, HTML, 和JavaScript。它提供給JavaScript登陸和調(diào)試控制臺(tái)一些有用的功能如AJAX requests logging,JavaScript解釋器,DOM explorer等等。Firebug Lite 可以在IE, Opera, 和Safari上使用。
  Venkman
  Venkman為基于Gecko的瀏覽器提供功能強(qiáng)大JavaScript調(diào)試環(huán)境。這個(gè)調(diào)試器以Firefox & Mozilla插件的形式使用??梢栽谟脩艚缑嫔虾涂刂婆_(tái)命令中使用斷點(diǎn)管理,調(diào)用棧檢查,變量/對(duì)象檢查等功能,可以讓你以最習(xí)慣的方式調(diào)試。
  NitobiBug
  NitobiBug是一種基于瀏覽器的JavaScript對(duì)象記錄和檢查工具——與Firebug作用相似。NitobiBug在可以在不同的服務(wù)器(IE6+, Safari, Opera, Firefox)上運(yùn)行以提供開(kāi)發(fā)各種Ajax應(yīng)用程序一致且功能強(qiáng)大的工具。 
  DamnIT
  DamnIT是一種免費(fèi)服務(wù),當(dāng)用戶在網(wǎng)頁(yè)上遇到JavaScript錯(cuò)誤時(shí)它會(huì)給你發(fā)送電子郵件。
  JS Bin
  JS Bin是一種在線網(wǎng)絡(luò)應(yīng)用程序,為幫助JavaScript開(kāi)發(fā)者在一定情景里測(cè)試代碼片段以及協(xié)作調(diào)試代碼而特別設(shè)計(jì)。你可以用JS Bin在線編輯測(cè)試JavaScript和HTML代碼。一旦完成,你可以將URL保存并發(fā)送給同伴來(lái)進(jìn)行審查或獲得幫助。
  Blackbird
  許多JavaScript開(kāi)發(fā)者僅僅使用alert()來(lái)顯示各種信息調(diào)試代碼。Blackbird在JavaScript上提供了記錄信息的簡(jiǎn)單方式以及一個(gè)引人注意的控制臺(tái)程序來(lái)察看并過(guò)濾信息。

HTTP監(jiān)控

  Fiddler
  Fiddler是一種Web調(diào)試代理,它記錄你的電腦和網(wǎng)絡(luò)之間所有的HTTP(S)流量??梢杂肍iddler檢查所有HTTP(S)流量,設(shè)置斷點(diǎn),干涉進(jìn)來(lái)或出去的數(shù)據(jù)。
  TamperData
  TamperData是一個(gè)追蹤并修改http/https請(qǐng)求的Firefox擴(kuò)展??梢杂盟龌诰W(wǎng)絡(luò)的應(yīng)用程序的安全測(cè)試,追蹤請(qǐng)求/回應(yīng)。
  Live HTTP Headers
  可以在瀏覽的時(shí)候查看網(wǎng)頁(yè)的HTTP headers??梢杂肔ive HTTP Headers調(diào)試網(wǎng)頁(yè)應(yīng)用程序,找出遠(yuǎn)端網(wǎng)站使用的是那種網(wǎng)站服務(wù)器,或者查看遠(yuǎn)端網(wǎng)站發(fā)送的小數(shù)據(jù)文件。

文件

  jGrouseDoc
  jGrouseDoc可以從源代碼中的注釋生成API文件。你可以用這個(gè)工具記載你需要的所有構(gòu)造——不僅有函數(shù)和變量,還有類文件包,界面,命名空間,包和其它。使用那種JavaScript框架是無(wú)關(guān)緊要的——你可以不采取框架或工具強(qiáng)加的方式而以自己希望的方式記錄代碼,
  JSDoc Toolkit
  JavaScript的一種文件產(chǎn)生器,以JavaScript形式寫成;它自動(dòng)從加注的JavaScript源代碼中生成格式模版化,多頁(yè)面HTML(或XML, JSON, 抑或其它文本)。

壓縮

  Online Javascript Compression Tool
  一個(gè)可以用一些壓縮算法如JSMin 和Packer壓縮JavaScript文件的在線JavaScript壓縮器。壓縮的JavaScript文件是生產(chǎn)環(huán)境中的理想文件,因?yàn)樗鼈兂3⑽募笮p小30-90%。在很大程度上,文件尺寸的縮小是通過(guò)除去網(wǎng)頁(yè)瀏覽者或訪問(wèn)者不需要的注釋和多余的空格字符來(lái)實(shí)現(xiàn)的。
  Scriptalizer
  一個(gè)將多個(gè)JavaScript文件組合為一個(gè)文件的在線工具。
  Dojo ShrinkSafe
  一種命令行實(shí)用程序,允許你用瀏覽器縮小文件大小,從而縮短響應(yīng)時(shí)間。Dojo壓縮器不是建立在脆弱的規(guī)則表達(dá)式基礎(chǔ)上的。它基于來(lái)自莫茲拉專案的JavaScript引擎。由于一個(gè)基于真正的parse stream,Dojo壓縮器比基于規(guī)則表達(dá)式的工具可以更好體現(xiàn)代符(變量名等等)的環(huán)境。
  YUI Compressor
  The YUI Compressor是一種JavaScript壓縮器。去除注釋和空格之外,它還可以用最小可用變量名混淆局部變量。即使在使用‘eval’或‘with’之類構(gòu)造(在這些情況下壓縮并不合適),這種混淆也是安全的。與jsmin相比,它平均節(jié)省20%。

格式化

  JavaScript代碼美化工具
  這個(gè)美化工具可處理散亂或壓縮的JavaScript代碼,不斷對(duì)其進(jìn)行快速的格式化并使其可讀。

編輯程序&集成開(kāi)發(fā)環(huán)境

  Aptana Studio
  Aptana Studio是一個(gè)完整的網(wǎng)絡(luò)開(kāi)發(fā)環(huán)境。它提供有JavaScript代碼自動(dòng)完成和調(diào)試,HTML/CSS/JavaScript代碼提示,以及對(duì)重要的Ajax類庫(kù)的支持。Aptana Studio甚至給你頁(yè)面上所有的,包括你自己的JavaScript提供代碼提示。
  Komodo Edit
  Komodo Edit是一種免費(fèi)開(kāi)放的源編輯程序。它提供自動(dòng)完成,調(diào)用提示,多種語(yǔ)言支持,語(yǔ)法高亮顏色顯示,語(yǔ)法檢查,Vi emulation,Emacs快捷鍵綁定等等功能。擴(kuò)展Komodo Edit是其最實(shí)用的功能之一。你會(huì)發(fā)現(xiàn)各種對(duì)JavaScript開(kāi)發(fā)者有用的擴(kuò)展(如JSLint plugin for Komodo, Venkman JavaScript Debugger,等等)。
  Spket IDE
  Spket IDE是JavaScript和XML開(kāi)發(fā)功能強(qiáng)大的工具包。JavaScript, XUL/XBL and Yahoo! Widget開(kāi)發(fā)功能強(qiáng)大的編輯器。JavaScript編輯器有代碼完成,語(yǔ)法高亮顯示和內(nèi)容概要等功能,這些功能幫助開(kāi)發(fā)者高效制作出有效的JavaScript代碼。Spket IDE為非商業(yè)用途免費(fèi)提供。

其它工具

  Google的AJAX APIs Playground
  AJAX API Playground裝載有Google JavaScript APIs(Maps, Search, Feeds, Calendar, Visualization, Language, Blogger, Libraries和Earth,等等)例子,你可以編輯運(yùn)行這些例子幫助你探究Google的APIs可提供的功能。同時(shí)也還有保存和輸出功能。你可以用保存功能保持編輯的例子以留待以后使用。而輸出功能可用來(lái)修改例子并把代碼公布在一個(gè)永久的URL上。
  QuirksMode –相容性表
  檢查CSS2, CSS3, DOM Core, DOM HTML, DOM CSS, DOM Events 和CSS Object Model View主要瀏覽器相容性狀態(tài)的最受歡迎的出處。
  HTML到JavaScript轉(zhuǎn)換器
  HTML到JavaScript轉(zhuǎn)換器獲得置標(biāo)并將它轉(zhuǎn)換成一系列可以在JavaScript塊中使用的document.write()申明。
  Glimmer
  Glimmer是一種桌面應(yīng)用軟件,可以用它利用jQuery庫(kù)的作用在網(wǎng)頁(yè)上輕松制作交互式元素。可以用它輕松制作交錯(cuò)感受如旋轉(zhuǎn)相冊(cè)/報(bào)頭,下拉導(dǎo)航,懸停效果,或自定義動(dòng)畫。
  jQuery Function Builder
  你可以用這個(gè)工具很快建立一個(gè)函數(shù)集,當(dāng)頁(yè)面加載完畢/準(zhǔn)備完畢時(shí),調(diào)用該函數(shù)集。
  JavaScript Regex Generator
  一個(gè)制作正則表達(dá)式的在線工具。

其它瀏覽器擴(kuò)展

  Firefox, Flock & Seamonkey的網(wǎng)絡(luò)開(kāi)發(fā)人員擴(kuò)展
  網(wǎng)絡(luò)開(kāi)發(fā)人員拓展在瀏覽器中增加了一個(gè)菜單和工具條,其中包含許多網(wǎng)絡(luò)開(kāi)發(fā)工具包括能使你的XHTML生效,發(fā)現(xiàn)JavaScript/CSS的錯(cuò)誤,網(wǎng)頁(yè)結(jié)構(gòu)可視化,測(cè)試網(wǎng)絡(luò)表單,改變運(yùn)行中的XHTML,檢查HTTP頭信息等等。
  Opera Dragonfly
  Opera Dragonfly 是Opera瀏覽器的跨設(shè)備,跨平臺(tái)調(diào)試環(huán)境—調(diào)試JavaScript, 檢查編輯CSS和DOM,并且查看移動(dòng)設(shè)備或計(jì)算機(jī)上的錯(cuò)誤。
  IE6/7的開(kāi)發(fā)者工具條
  微軟的英特網(wǎng)瀏覽器開(kāi)發(fā)者工具條為網(wǎng)頁(yè)的快速創(chuàng)建,理解和故障診斷提供了各種的工具。

編輯本段使用技巧

  Javascript加入網(wǎng)頁(yè)有兩種方法:直接方式和引用方式。

直接方式

  這是最常用的方法,大部分含有Javascript的網(wǎng)頁(yè)都采用這種方法,如:
  <script type="application/javascript">
  <!--
  document.write("這是Javascript!采用直接插入的方法!");
  //-Javascript結(jié)束-->
  </script>
  在這個(gè)例子中,我們可看到一個(gè)新的標(biāo)簽:<script>……</script>,而<script language="Javascript"> 用來(lái)告訴瀏覽器這是用Javascript編寫的程序,需要調(diào)動(dòng)相應(yīng)的解釋程序進(jìn)行解釋。(w3c已經(jīng)建議使用新的標(biāo)準(zhǔn):<script type="application/javascript">)
  HTML的注釋標(biāo)簽<!--和-->:用來(lái)去掉瀏覽器所不能識(shí)別的Javascript源代碼的,這對(duì)不支持Javascript 語(yǔ)言的瀏覽器來(lái)說(shuō)是很有用的。
  注意在非xhtml文檔中插入script標(biāo)簽時(shí),如果不是引用外部文件,應(yīng)該在script內(nèi)加上cdata聲明,避免大于和小于運(yùn)算符引起的瀏覽器解析錯(cuò)誤
  //-Javascript結(jié)束:雙斜杠表示Javascript的注釋部分,即從//開(kāi)始到行尾的字符都被忽略。 至于程序中所用到的document.write()函數(shù)則表示將括號(hào)中的文字輸出到窗口中去,這在后面將會(huì)詳細(xì)介紹。 另外一點(diǎn)需要注意的是,<script>……</script>的位置并不是固定的,可以包含在<head>……</head> 或<body>…..</body>中的任何地方。
  還有一個(gè)更高級(jí)版本的嵌入腳本,它使用了HTML中的CDATA語(yǔ)法(Character Data,就是把CDATA中的文本全部當(dāng)作純文本處理,除非遇到CDATA的結(jié)束)
  <script language="javascript" type="text/javascript"><!--//--><!CDATA[[//><!--
  //javascript代碼
  //--><!]]></script>

引用方式

  如果已經(jīng)存在一個(gè)Javascript源文件(通常以js為擴(kuò)展名),則可以采用這種引用的方式,以提高程序代碼的利用率。其基本格式如下:
  <script src=“url” type="text/javascript"></script>
  其中的Url就是程序文件的地址。同樣的,這樣的語(yǔ)句可以放在HTML文檔頭部或主體的任何部分。如果要實(shí)現(xiàn)“直接插入方式”中所舉例子的效果,可以首先創(chuàng)建一個(gè)Javascript源代碼文件“Script.js”,其內(nèi)容如下:
  document.write("這是Javascript!采用直接插入的方法!");
  在網(wǎng)頁(yè)中可以這樣調(diào)用程序:<script src="Script.js" type="text/javascript"></script> 。
  也可以同時(shí)在導(dǎo)入文件時(shí)制定javascript的版本,例如:<script src="Script.js" type="text/javascript; version=1.8"></script>
  注意:凡是指定了src屬性的script標(biāo)簽里的內(nèi)容都會(huì)被忽略。

腳本的調(diào)試

  

  JavaScript Editor

隨著用JavaScript編程的深入,你會(huì)開(kāi)始理解那些JavaScript給出的不透明錯(cuò)誤信息。一旦你理解了你常犯的一般性錯(cuò)誤,你就會(huì)很快知道怎樣避免它們,這樣你寫的代碼中的錯(cuò)誤將越來(lái)越少。編程實(shí)際上是一種能隨著時(shí)間不斷飛快進(jìn)步的技術(shù)。但是不管變得多么熟練,你仍然要花一些時(shí)間調(diào)試你的代碼。如果你做過(guò)家庭作業(yè),或有過(guò)JavaScript編程經(jīng)驗(yàn),你會(huì)知道相當(dāng)多的時(shí)間是花在調(diào)試上。這很正常- 這只是編程者必須做的事之一。實(shí)際上,按照大量的研究,程序員平均百分之五十的時(shí)間花在解決代碼中的錯(cuò)誤。
  調(diào)試的技巧:
  根據(jù)瀏覽器的提示信息
  選擇瀏覽器是很重要的,不同的瀏覽器的錯(cuò)誤提示都不同,在瀏覽器中錯(cuò)誤信息最容易理解的,能最快找出錯(cuò)誤的,就是firefox和opera了。它們都會(huì)給出詳細(xì)的出錯(cuò)原因和行號(hào)。
  使用調(diào)試工具
  如果你是Firefox的用戶,那么你可以到添加組件的網(wǎng)頁(yè)中搜索一些用于網(wǎng)頁(yè)開(kāi)發(fā)的組件
  推薦:Firebug
  一款非常優(yōu)秀的組件,可以指出你的腳本中的錯(cuò)誤,查看DOM樹,查看cookie,ajax通信,并且還有CSS的調(diào)試工具,而且也有不少firebug的擴(kuò)展。
  javascript debugger
  這是mozilla開(kāi)發(fā)的調(diào)試工具,項(xiàng)目代號(hào)叫venkman,和gecko的javascript解析器無(wú)縫集成,功能非常強(qiáng)大。
  清除瀏覽器緩存
  有時(shí)瀏覽器會(huì)在網(wǎng)頁(yè)明明修改過(guò)的時(shí)候卻依然使用緩存里的網(wǎng)頁(yè)來(lái)顯示,這時(shí)最好強(qiáng)制刷新網(wǎng)頁(yè)以重新載入數(shù)據(jù),如果還不行就清除緩存。
  輸出變量
  如果你使用firebug調(diào)試的話,可以很方便地在腳本里用console.log()來(lái)輸出變量的值,而且幸運(yùn)的是,firebug還會(huì)對(duì)你輸出的變量進(jìn)行解析,在控制臺(tái)里顯示一個(gè)清晰的變量結(jié)構(gòu)
  如果你沒(méi)有firebug,那么可以用alert代替,不過(guò)當(dāng)有幾百個(gè)變量輸出時(shí),很可能不得不強(qiáng)行關(guān)閉瀏覽器。在網(wǎng)頁(yè)里專門放置一個(gè)調(diào)試用的div也是一種不錯(cuò)的解決辦法.

編輯本段相關(guān)概念

  客戶端腳本語(yǔ)言
  不同于服務(wù)器端腳本語(yǔ)言,例如PHP與ASP,JavaScript是客戶端腳本語(yǔ)言,也就是說(shuō)JavaScript是在用戶的瀏覽器上運(yùn)行,不需要服務(wù)器的支持而可以獨(dú)立運(yùn)行。所以在早期程序員比較青睞于JavaScript以減少對(duì)服務(wù)器的負(fù)擔(dān),而與此同時(shí)也帶來(lái)另一個(gè)問(wèn)題:安全性。而隨著服務(wù)器的強(qiáng)壯,雖然現(xiàn)在的程序員更喜歡運(yùn)行于服務(wù)端的腳本以保證安全,但JavaScript仍然以其跨平臺(tái)、容易上手等優(yōu)勢(shì)大行其道。
  JavaScript是一種腳本語(yǔ)言,其源代碼在發(fā)往客戶端運(yùn)行之前不需經(jīng)過(guò)編譯,而是將文本格式的字符代碼發(fā)送給瀏覽器由瀏覽器解釋運(yùn)行。解釋語(yǔ)言的弱點(diǎn)是安全性較差,而且在JavaScript中,如果一條運(yùn)行不了,那么下面的語(yǔ)言也無(wú)法運(yùn)行。而且由于每次重新加載都會(huì)重新解譯,加載后,有些代碼會(huì)延遲至運(yùn)行時(shí)才解譯,甚至?xí)啻谓庾g,所以速度較慢。
  與其相對(duì)應(yīng)的是編譯語(yǔ)言,例如Java。Java的源代碼在傳遞到客戶端運(yùn)行之前,必須經(jīng)過(guò)編譯,因而客戶端上必須具有相應(yīng)平臺(tái)上的仿真器或解釋器,它可以通過(guò)編譯器或解釋器實(shí)現(xiàn)獨(dú)立于某個(gè)特定的平臺(tái)編譯代碼的束縛。但是它必須在服務(wù)器端進(jìn)行編譯,這樣就拖延了時(shí)間。但因?yàn)橐呀?jīng)封裝,所以能保證安全性。

面向?qū)ο笮?/span>

  javascript中并沒(méi)有類的概念,但是javascript使用了一種叫“原型化繼承”的模型,而且javascript中也有作用域、閉包、繼承、上下文對(duì)象等概念
  
  作用域
  作用域是指變量存在的域,在文檔中的javascript腳本的作用域都是window。在javascript,function和let分隔作用域
  例如下面這個(gè)作用域的例子:
  var myVariable="outside";
  function myFunction(){
  var myVariable="inside";
  alert(myVariable);
  }
  myFunction();
  alert(myVariable);
  結(jié)果會(huì)是先彈出內(nèi)容為“inside”的對(duì)話框,然后彈出內(nèi)容為“outside”的對(duì)話框,這就是function建立了一個(gè)作用域,而第一次提示的是myFunction作用域內(nèi)的myVariable
  下面是一個(gè)let控制作用域的例子:
  var myVariable="outside";
  let(myVarialbe="inside") alert(myVariable); // inside
  alert(myVariable); // outside
  let語(yǔ)句是在javascript 1.7中加入的
  閉包
  閉包也和作用域有關(guān),它指的就是一個(gè)封閉的作用域(擁有外部變量,函數(shù)無(wú)法訪問(wèn)的變量和函數(shù)),一般都是用一個(gè)匿名函數(shù)來(lái)做成閉包的
  (function(){
  var myVariable="private",
  })();
  alert(myVariable); // undefined
  上下文對(duì)象
  上下文對(duì)象指的就是this對(duì)象。它是一個(gè)只能讀取而不能直接賦值的對(duì)象(就是你只能對(duì)this擁有的屬性和方法賦值)。上下文對(duì)象在javascript可以說(shuō)發(fā)揮的淋漓盡致。
  如果你在一個(gè)對(duì)象(Object)中使用this,指的就是這個(gè)對(duì)象
  var obj={
  getThis:function(){
  return this;
  }
  };
  alert(obj.getThis===obj); // true
  同樣的,在作用域中已經(jīng)提到過(guò)文檔中javascript對(duì)象都屬于window,那么下面這個(gè)例子
  alert(window===this);
  也將提示true。
  上下文對(duì)象在事件偵聽(tīng)器中指的就是發(fā)生事件的對(duì)象
  document.body.addEventListener('click',function(){
  alert(this===document.body); // true
  },false);
  this在構(gòu)造函數(shù)中則是指實(shí)例
  function Person(name){
  thisname=name;
  }
  var Sam=new Persom();
  這里this指的就是Sam。

Javascript庫(kù)

  庫(kù),指得是可以方便應(yīng)用到現(xiàn)有開(kāi)發(fā)體系中的、現(xiàn)成的代碼資源。庫(kù)不僅為大部分日常的DOM腳本編程工作提供了快捷的解決方案,而且也提供了許多獨(dú)特的工具。雖然庫(kù)使用起來(lái)很方便,但它們也并非能解決你所有的問(wèn)題。在使用庫(kù)之前,一定要保證真正理解javascript的DOM原理。
  這些庫(kù)一般是一個(gè)(或多個(gè))js(Javascript的縮寫)文件,只要把他們導(dǎo)入你的網(wǎng)頁(yè)就能使用了。
  常用的庫(kù)有:
  jQuery:javascript庫(kù)中的新成員,提供cssxpath選擇符查找元素、ajax、動(dòng)畫效果等
  JSer: [3]國(guó)人開(kāi)發(fā)的一款全功能的開(kāi)源腳本框架. 借助JSer,可以便捷的操作DOM、CSS樣式訪問(wèn)、屬性讀寫、事件綁定、行為切換、動(dòng)態(tài)載入、數(shù)據(jù)緩存、URL與AJAX等眾多功能。
  dojo:一個(gè)巨大的庫(kù),包括的東西很多,dijit和dojox是dojo的擴(kuò)展,幾乎你想要的各種javascript程序都包括了。
  prototype:一個(gè)非常流行的庫(kù),使用了原型鏈向javascript中添加了很多不錯(cuò)的函數(shù)
  YUI:(YahooYUI庫(kù))yahoo!用戶界面,非常實(shí)用,提供各種解決方案。
  ExtJs:組件非常豐富,皮膚也很漂亮,動(dòng)畫效果也豐富。

與Java的不同

  

  javascript完全手冊(cè)

Java之于Javascript就好比Car(汽車)之于Carpet(地毯)。
  ——來(lái)自Usenet上的Javascript討論組
  中國(guó)本地版的說(shuō)法應(yīng)該是這樣的:Java之于JavaScript就好比雷鋒和雷峰塔的關(guān)系。
  很多人看到Java 和JavaScript 都有“Java”四個(gè)字,就以為它們是同一樣?xùn)|西,連我自己當(dāng)初也是這樣。事實(shí)上,JAVA語(yǔ)言和JavaScript語(yǔ)言是相關(guān)的,但是它們的聯(lián)系并非你想像的那樣緊密。首先Java語(yǔ)言是SUN Microsystems公司的產(chǎn)品,而JavaScript是Netscape公司的產(chǎn)品。
  其次它們?cè)诠δ苌弦灿行┎町悾篔ava在客戶端的運(yùn)行的應(yīng)用程序叫做Java Applet,是嵌在網(wǎng)頁(yè)中,而又有自己獨(dú)立的運(yùn)行窗口的小程序。Java Applet 是預(yù)先編譯好的,一個(gè)Applet 文件(.class)用Notepad 打開(kāi)閱讀,根本不能理解。Java Applet 的功能很強(qiáng)大,可以訪問(wèn)http、ftp等協(xié)議,甚至可以在電腦上種病毒(已有先例了)。相比之下,JavaScript 的能力就比較小了。JavaScript 是一種“腳本”(“Script”),它直接把代碼寫到HTML 文檔中,瀏覽器讀取它們的時(shí)候才進(jìn)行編譯、執(zhí)行,所以能查看HTML 源文件就能查看JavaScript 源代碼。JavaScript 沒(méi)有獨(dú)立的運(yùn)行窗口,瀏覽器當(dāng)前窗口就是它的運(yùn)行窗口。它們的相同點(diǎn),我想只有同是以Java 作編程語(yǔ)言一點(diǎn)了。
  Java是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)的總稱。用Java實(shí)現(xiàn)的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平臺(tái)、動(dòng)感的Web、Internet計(jì)算。從此,Java被廣泛接受并推動(dòng)了Web的迅速發(fā)展,常用的瀏覽器現(xiàn)在均支持Java applet。另一方面,Java技術(shù)也不斷更新。
  Java平臺(tái)由Java虛擬機(jī)(Java Virtual Machine)和Java 應(yīng)用編程接口(Application Programming Interface、簡(jiǎn)稱API)構(gòu)成。Java 應(yīng)用編程接口為Java應(yīng)用提供了一個(gè)獨(dú)立于操作系統(tǒng)的標(biāo)準(zhǔn)接口,可分為基本部分和擴(kuò)展部分。在硬件或操作系統(tǒng)平臺(tái)上安裝一個(gè)Java平臺(tái)之后,Java 應(yīng)用程序就可運(yùn)行。現(xiàn)在Java平臺(tái)已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。這樣Java程序可以只編譯一次,就可以在各種系統(tǒng)中運(yùn)行。
  Java分為三個(gè)體系JavaSE、JavaEE、JavaME。

與JScript不同

  JScript是Microsoft公司開(kāi)發(fā)的,Javascript是Netscape公司開(kāi)發(fā)的,雖然他們是死對(duì)頭,但是在現(xiàn)在的瀏覽器中,無(wú)論你把語(yǔ)言指定為Javascript 還是Jscript,瀏覽器都會(huì)綜合他們兩個(gè)語(yǔ)言的特性,所以,即使把語(yǔ)言指定為Javascript,用幾句JScript也是沒(méi)問(wèn)題的。
  雖然瀏覽器綜合了兩種語(yǔ)言的特性,但是對(duì)于那些對(duì)腳本語(yǔ)言熟悉的程序員來(lái)說(shuō),還是Jscript的實(shí)用性更強(qiáng)。如果你在網(wǎng)上察看Javascript和Jscript的手冊(cè),你會(huì)發(fā)現(xiàn)Jscript的運(yùn)算符比Javascript的多得多,所以許多庫(kù)(比如Concurrent、Thread)都是采用Jscript的格式編寫的。

其他腳本語(yǔ)言的關(guān)系

  Visual Studio 2008之前的版本可以使用debugger來(lái)調(diào)試。
  Javascript不是一個(gè)預(yù)編譯語(yǔ)言,所以雖然Javascript的作者盡量把它寫得強(qiáng)大,但是仍然有一些功能無(wú)法實(shí)現(xiàn),而且對(duì)于那些對(duì)VBscript熟悉而對(duì)Javascript 卻較陌生的程序員來(lái)說(shuō),這是一個(gè)很頭疼的難題,因?yàn)閂Bscript也只是一門腳本語(yǔ)言,當(dāng)然沒(méi)有VB 強(qiáng)大。
  許多瀏覽器(如IE)都提供了腳本互通,但是網(wǎng)上對(duì)此的介紹不多,最多在應(yīng)用問(wèn)題上提到一點(diǎn)。Javascript和VBscript的互通性很好,而且在VBArray(Javascript不支持多維數(shù)組)和ASCII(Javascript不能把字符轉(zhuǎn)成ASCII)中都得到了應(yīng)用,這方面基礎(chǔ)VBScript做得很好。所以它的代碼的大致意思就是Javascript可以用VBScript的自定義函數(shù)和變量(當(dāng)然不能用內(nèi)置變量和函數(shù))通過(guò)轉(zhuǎn)換調(diào)用內(nèi)置函數(shù)
  <script language="vbscript">
  function AL()
  AL = "S"
  end function
  </script>
  <script language="javascript">
  alert(AL());
  </script>
  至于效果就自己看吧。

與DOM的關(guān)系

  DOM是Document Object Model(文檔對(duì)象模型)的簡(jiǎn)稱,它是讓javascript與頁(yè)面交互的一種方式,能夠動(dòng)態(tài)修改文檔中的節(jié)點(diǎn)、元素、屬性等。
  DOM不僅適用于xhtml文檔,對(duì)于所有的xml文檔dom都是可以使用的。
  DOM的級(jí)別
  1級(jí):基本的節(jié)點(diǎn)操作一級(jí)里都包括了
  2級(jí):增加了對(duì)樣式表、文檔顯示、事件處理等的支持
  3級(jí):可以用javascript加載和保存文檔、檢查文檔錯(cuò)誤。

進(jìn)階技術(shù)AJAX

  AJAX全稱為“Asynchronous JavaScript and XML”(異步JavaScriptXML),是一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。根據(jù)Ajax提出者Jesse James Garrett建議AJAX:
  1.使用XHTML+CSS來(lái)表示信息
  2.使用JavaScript操作DOMDocument Object Model)進(jìn)行動(dòng)態(tài)顯示及交互
  3.使用XMLXSLT進(jìn)行數(shù)據(jù)交換及相關(guān)操作
  4.使用XMLHttpRequest對(duì)象與Web服務(wù)器進(jìn)行異步數(shù)據(jù)交換
  5.使用JavaScript將所有的東西綁定在一起。
  AJAX的應(yīng)用使用支持以上技術(shù)的Web瀏覽器作為運(yùn)行平臺(tái)。這些瀏覽器目前包括:Internet ExplorerMozilla、FirefoxOpera、Konqueror及Mac OS的Safari。但是Opera不支持XSL格式對(duì)象,也不支持XSLT。

編輯本段其他

編寫第一個(gè)JavaScript程序

  <html>
  <head>
  <script type="text/javascript">
  <!--
  document.write("Hello, world!") //直接在瀏覽器視窗顯示。
  alert("Hello, world!") //開(kāi)啟對(duì)話視窗顯示。
  -->
  </script>
  </head>
  <body>
  </body>
  </html>
  JavaScript代碼由<script type="text/javaScript">…</script>說(shuō)明。在標(biāo)識(shí)<script type ="text/javaScript">…</script>之間就可加入JavaScript腳本。 alert()是JavaScript的窗口對(duì)象方法,其功能是彈出一個(gè)具有OK對(duì)話框并顯示()中的字符串。通過(guò)<!-- …//-->標(biāo)識(shí)說(shuō)明:若不認(rèn)識(shí)JavaScript代碼的瀏覽器,則所有在其中的標(biāo)識(shí)均被忽略;若認(rèn)識(shí),則執(zhí)行其結(jié)果。使用注釋這是一個(gè)好的編程習(xí)慣,它使其他人可以讀懂你的語(yǔ)言。JavaScript 以</Script> 標(biāo)簽結(jié)束。

提升JavaScript的運(yùn)行速度

  遞歸是拖慢腳本運(yùn)行速度的大敵之一。太多的遞歸會(huì)讓瀏覽器變得越來(lái)越慢直到死掉或者莫名其妙的突然自動(dòng)退出(在firefox中彈出腳本無(wú)響應(yīng)的對(duì)話框),所以我們一定要解決在JavaScript中出現(xiàn)的這一系列性能問(wèn)題。在這個(gè)系列文章的第二篇中,我曾經(jīng)簡(jiǎn)短的介紹了如何通過(guò)memorization技術(shù)來(lái)替代函數(shù)中太多的遞歸調(diào)用。memoization是一種可以緩存之前運(yùn)算結(jié)果的技術(shù),這樣我們就不需要重新計(jì)算那些已經(jīng)計(jì)算過(guò)的結(jié)果。對(duì)于通過(guò)遞歸來(lái)進(jìn)行計(jì)算的函數(shù),memoization簡(jiǎn)直是太有用了。我現(xiàn)在使用的memoizer是由Crockford寫的,主要應(yīng)用在那些返回整數(shù)的遞歸運(yùn)算中。當(dāng)然并不是所有的遞歸函數(shù)都返回整數(shù),所以我們需要一個(gè)更加通用的memoizer()函數(shù)來(lái)處理更多類型的遞歸函數(shù)。
  function memoizer(fundamental, cache){ cache = cache || {} var shell = function(arg){ if (!(arg in cache)){ cache[arg] = fundamental(shell, arg) } return cache[arg]; }; return shell;}這個(gè)版本的函數(shù)和Crockford寫的版本有一點(diǎn)點(diǎn)不同。首先,參數(shù)的順序被顛倒了,原有函數(shù)被設(shè)置為第一個(gè)參數(shù),第二個(gè)參數(shù)是緩存對(duì)象,為可選參數(shù),因?yàn)椴⒉皇撬械倪f歸函數(shù)都包含初始信息。在函數(shù)內(nèi)部,我將緩存對(duì)象的類型從數(shù)組轉(zhuǎn)換為對(duì)象,這樣這個(gè)版本就可以適應(yīng)那些不是返回整數(shù)的遞歸函數(shù)。在shell函數(shù)里,我使用了in操作符來(lái)判斷參數(shù)是否已經(jīng)包含在緩存里。這種寫法比測(cè)試類型不是undefined更加安全,因?yàn)閡ndefined是一個(gè)有效的返回值。我們還是用之前提到的斐波納契數(shù)列來(lái)做說(shuō)明:
  var fibonacci = memoizer(function (recur, n) { return recur(n - 1) + recur(n - 2); }, {"0":0, "1":1});同樣的,執(zhí)行fibonacci(40)這個(gè)函數(shù),只會(huì)對(duì)原有的函數(shù)調(diào)用40次,而不是夸張的331,160,280次。memoization對(duì)于那些有著嚴(yán)格定義的結(jié)果集的遞歸算法來(lái)說(shuō),簡(jiǎn)直是棒極了。然而,確實(shí)還有很多遞歸算法不適合使用memoization方法來(lái)進(jìn)行優(yōu)化。
  我在學(xué)校時(shí)的一位教授一直堅(jiān)持認(rèn)為,任何使用遞歸的情況,如果有需要,都可以使用迭代來(lái)代替。實(shí)際上,遞歸和迭代經(jīng)常會(huì)被作為互相彌補(bǔ)的方法,尤其是在另外一種出問(wèn)題的情況下。將遞歸算法轉(zhuǎn)換為迭代算法的技術(shù),也是和開(kāi)發(fā)語(yǔ)言無(wú)關(guān)的。這對(duì)JavaScript來(lái)說(shuō)是很重要的,因?yàn)楹芏鄸|西在執(zhí)行環(huán)境中是受到限制的(the importance in JavaScript is greater, though, because the resources of the execution environment are so restrictive.)。讓我們回顧一個(gè)典型的遞歸算法,比如說(shuō)歸并排序,在JavaScript中實(shí)現(xiàn)這個(gè)算法需要下面的代碼:
  function merge(left, right){ var result = []; while (left.length > 0 && right.length > 0){ if (left[0] < right[0]){ result.push(left.shift()); } else { result.push(right.shift()); } } return result.concat(left).concat(right);}//采用遞歸實(shí)現(xiàn)的歸并排序算法function mergeSort(items){ if (items.length == 1) { return items; } var middle = Math.floor(items.length / 2), left = items.slice(0, middle), right = items.slice(middle); return merge(mergeSort(left), mergeSort(right));}調(diào)用mergeSort()函數(shù)處理一個(gè)數(shù)組,就可以返回經(jīng)過(guò)排序的數(shù)組。注意每次調(diào)用mergeSort()函數(shù),都會(huì)有兩次遞歸調(diào)用。這個(gè)算法不可以使用memoization來(lái)進(jìn)行優(yōu)化,因?yàn)槊總€(gè)結(jié)果都只計(jì)算并使用一次,就算緩沖了結(jié)果也沒(méi)有什么用。如果你使用mergeSort()函數(shù)來(lái)處理一個(gè)包含100個(gè)元素的數(shù)組,總共會(huì)有199次調(diào)用。1000個(gè)元素的數(shù)組將會(huì)執(zhí)行1999次調(diào)用。在這種情況下,我們的解決方案是將遞歸算法轉(zhuǎn)換為迭代算法,也就是說(shuō)要引入一些循環(huán)(關(guān)于算法,可以參考這篇《List Processing: Sort Again, Naturally》)。

常用的javascript庫(kù)

  jquery庫(kù)、JSer[3]庫(kù)、prototype

編輯本段版本歷史

  
版本發(fā)布日期基于Netscape NavigatorMozilla FirefoxInternet ExplorerOperaSafari谷歌Chrome
1.01996年3月2.03.0
1.11996年8月3.0
1.21997年6月4.0-4.05
1.31998年10月ECMA-262 1 edition / ECMA-262 2 edition4.06-4.7x4.0
1.4Netscape
Server
1.52000年11月ECMA-262 3 edition6.01.05.5 (JScript 5.5),
6.(JScript 5.6),
7.(JScript 5.7),
8.(JScript 6)
6.0,
7.0,
8.0,
9.0
1.62005年11月1.5 + Array extras + Array and String generics + E4X1.53.0, 3.1
1.72006年10月1.6 + Pythonic generators + Iterators + let2.03.2, 4.01.0
1.82008年6月1.7 + Generator s + closures3.0
1.8.11.8 + Minor Updates3.5
1.91.8.1 + ECMAScript 5 Compliance4

編輯本段版本標(biāo)準(zhǔn)

  JavaScript已經(jīng)被Netscape公司提交給ECMA制定為標(biāo)準(zhǔn),稱之為ECMAScript,這個(gè)標(biāo)準(zhǔn)由ECMA 組織發(fā)展和維護(hù),標(biāo)準(zhǔn)編號(hào)ECMA-262。這個(gè)標(biāo)準(zhǔn)基于JavaScript (Netscape) 和JScript (Microsoft)。Netscape (Navigator 2.0) 的Brendan Eich發(fā)明了這門語(yǔ)言,從1996 年開(kāi)始,已經(jīng)出現(xiàn)在所有的Netscape 和Microsoft 瀏覽器中。ECMA-262 的開(kāi)發(fā)始于1996 年,在1997 年7 月,ECMA 會(huì)員大會(huì)采納了它的首個(gè)版本。
  在1998 年,該標(biāo)準(zhǔn)成為了國(guó)際ISO 標(biāo)準(zhǔn)(ISO/IEC 16262)。這個(gè)標(biāo)準(zhǔn)仍然處于發(fā)展之中。在2005年12月,ECMA發(fā)布ECMA-357標(biāo)準(zhǔn)(ISO/IEC 22537)出臺(tái),主要增加對(duì)擴(kuò)展標(biāo)記語(yǔ)言XML的有效支持。目前最新版為ECMA-262 3rd Edition。符合該標(biāo)準(zhǔn)的實(shí)現(xiàn)有:
  1. Microsoft公司的JScript
  2. Mozilla的Javascript-C(C語(yǔ)言實(shí)現(xiàn))
  3. SpiderMonkeyMozilla的Rhino(Java實(shí)現(xiàn))
  4. Digital Mars公司的DMDScript
  5. 谷歌公司的V8WebKit
  目前ECMA-262 4th Edition正在開(kāi)發(fā)的過(guò)程中,與其對(duì)應(yīng)的JavaScript的版本為JavaScript 2.0,目前也正在開(kāi)發(fā)過(guò)程中。

編輯本段歷史沿革

  大概在1998年,一家稱作Nombas的公司開(kāi)始開(kāi)發(fā)一種叫做C減減(C-minus-minus,簡(jiǎn)稱Cmm)的嵌入式腳本語(yǔ)言。這個(gè)腳本語(yǔ)言捆綁在一個(gè)叫做CEnvi的共享軟件產(chǎn)品中,當(dāng)Netscape Navigator嶄露頭角時(shí),Nombas開(kāi)發(fā)了一個(gè)可以嵌入網(wǎng)頁(yè)中的CEnvi的版本。這些早期的試驗(yàn)稱為EspressoPage(濃咖啡般的頁(yè)面),它們代表了第一個(gè)在萬(wàn)維網(wǎng)上使用的客戶端腳本語(yǔ)言。而Nombas絲毫沒(méi)有料到它的理念將會(huì)成為因特網(wǎng)的一塊重要基石。

編輯本段常見(jiàn)問(wèn)題(FQA)

JavaScript是Java的變種嗎

  JavaScript最初的確是受Java啟發(fā)而開(kāi)始設(shè)計(jì)的,而且設(shè)計(jì)的目的之一就是“看上去像Java”[2],因此語(yǔ)法上有很多類似之處,許多名稱和命名規(guī)范也借自Java。但是實(shí)際上,JavaScript的主要設(shè)計(jì)原則源自Self和Scheme[3],它與Java本質(zhì)上是不同的。它與Java名稱上的近似,是當(dāng)時(shí)網(wǎng)景為了營(yíng)銷考慮與Sun公司達(dá)成協(xié)議的結(jié)果。其實(shí)從本質(zhì)上講javascript更像是一門函數(shù)式編程語(yǔ)言.而非面向?qū)ο?/a>的語(yǔ)言,它使用一些智能的語(yǔ)法和語(yǔ)義來(lái)仿真高度復(fù)雜的行為。其對(duì)象模型極為靈活、開(kāi)放和強(qiáng)大,具有全部的反射性。

JavaScript與JScript相同嗎?

  為了取得技術(shù)優(yōu)勢(shì),微軟推出了JScript來(lái)迎戰(zhàn)JavaScript的腳本語(yǔ)言。為了互用性,Ecma國(guó)際(前身為歐洲計(jì)算機(jī)制造商協(xié)會(huì))建立了ECMA-262標(biāo)準(zhǔn)(ECMAScript)?,F(xiàn)在兩者都屬于ECMAScript的實(shí)現(xiàn)。

JavaScript是一門簡(jiǎn)單的語(yǔ)言嗎?

  盡管JavaScript作為給非程序人員的腳本語(yǔ)言,而非作為給程序人員的編程語(yǔ)言來(lái)推廣和宣傳,但是JavaScript是一門具有非常豐富特性的語(yǔ)言,它有著和其他編程語(yǔ)言一樣的復(fù)雜性,或更甚復(fù)雜。實(shí)際上,你必需對(duì)JavaScript有扎實(shí)的理解才能用它來(lái)撰寫比較復(fù)雜的程序。

編輯本段基于JavaScript框架

Jquery

  Jquery是繼prototype之后又一個(gè)優(yōu)秀的Javascrīpt框架。它是輕量級(jí)的js庫(kù)(壓縮后只有21k) ,它兼容CSS3,還兼容各種瀏覽器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使用戶能更方便地處理HTML documents、events、實(shí)現(xiàn)動(dòng)畫效果,并且方便地為網(wǎng)站提供AJAX交互。jQuery還有一個(gè)比較大的優(yōu)勢(shì)是,它的文檔說(shuō)明很全,而且各種應(yīng)用也說(shuō)得很詳細(xì),同時(shí)還有許多成熟的插件可供選擇。jQuery能夠使用戶的html頁(yè)保持代碼和html內(nèi)容分離,也就是說(shuō),不用再在html里面插入一堆js來(lái)調(diào)用命令了,只需定義id即可。

Ext

  Ext是一個(gè)強(qiáng)大的js類庫(kù),以前是基于YAHOO-UI,現(xiàn)在已經(jīng)完全獨(dú)立了。 主要包括data、widget、form、grid、dd、menu,其中最強(qiáng)大的應(yīng)該算grid了,編程思想是基于面向?qū)ο缶幊?/a>(oop),擴(kuò)展性相當(dāng)?shù)暮?可以自己寫擴(kuò)展,自己定義命名空間。web應(yīng)用可能感覺(jué)太大.不過(guò)您可以根據(jù)需要按需加載您想要的類庫(kù)就可以了?!?
  主要包括三個(gè)大的文件:ext-all.css,ext-base.js,ext-all.js(包括所有的類庫(kù),您可以根據(jù)需要進(jìn)行刪減.官方網(wǎng)站提供這一接口),在引用ext類庫(kù)的時(shí)候,這三個(gè)文件必不可少?!?
  它提供了豐富的,非常漂亮的外觀體驗(yàn),成為眾多界面層開(kāi)發(fā)人員的追捧!其核心的組件基本覆蓋了我們構(gòu)建
富客戶端的常用的組件?!?
  從 Ext 2開(kāi)始,商業(yè)版(針對(duì)那些以盈利為目的的開(kāi)發(fā)方)要收費(fèi)了。這可能會(huì)影響一些他的應(yīng)用前景?!?
  目前的最新版本為4.0

prototype

  prototype.js是由Sam Stephenson寫的一個(gè)javascript類庫(kù)。該框架的設(shè)計(jì)思路巧妙,而且兼容標(biāo)準(zhǔn)的類庫(kù),能夠幫助開(kāi)發(fā)人員輕松建立有交互性良好的web2.0特性富客戶端頁(yè)面。

網(wǎng)頁(yè)技術(shù)與標(biāo)準(zhǔn)

文檔呈現(xiàn)語(yǔ)言
HTML XHTML XML XForms
DHTML
樣式格式描述語(yǔ)言
層疊樣式表 XSL
動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)
CGI FastCGI ASP ASP.NET
ColdFusion JSP PHP
客戶端交互技術(shù)
ActiveX Java Applet JavaFX AJAX
Silverlight ActionScript Flex AIR
客戶端腳本語(yǔ)言
JavaScript JScript VBScript ECMAScript
標(biāo)識(shí)定位語(yǔ)言
URL URI XPath URL重寫
文檔綱要語(yǔ)言
DTD XML Schema
參考資料
擴(kuò)展閱讀:
開(kāi)放分類:
IT服務(wù)創(chuàng)新 編程軟件 軟件技術(shù) web技術(shù) 編程語(yǔ)言 , Web2.0 , 網(wǎng)頁(yè) , JAVASCRIPT
“javascript”在 英漢 詞典中的解釋(來(lái)源:百度詞典):
JavaScript
n.
1. 【電腦】一種由Sun Microsystems所開(kāi)發(fā)的程序語(yǔ)言(它是一種嚴(yán)密的物件導(dǎo)向的語(yǔ)言,適合在網(wǎng)際網(wǎng)絡(luò)上發(fā)展主從架構(gòu)的應(yīng)用程序)
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Javascript基本特點(diǎn)
8 張思維導(dǎo)圖學(xué)習(xí) Javascript
Web-第三天 JavaScript學(xué)習(xí)【悟空教程】
JavaScript框架從入門到精通
JAVA課程體系
JavaScript基本語(yǔ)法
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服