序言
寫本文的目的是對(duì)最近看過的篇幅進(jìn)行簡(jiǎn)單的總結(jié),把我認(rèn)為重點(diǎn)應(yīng)該記住的東西寫出來,方便以后查看回憶。
ECMAScript基礎(chǔ)
Ø 在20世紀(jì)90年代,為了提高系統(tǒng)運(yùn)行速度,各大廠商分別開發(fā)了自己的script腳本,用于在客戶端進(jìn)行數(shù)據(jù)校驗(yàn)等功能,但開發(fā)出來的網(wǎng)頁不能夠跨平臺(tái)運(yùn)行。隨著業(yè)界的擔(dān)心,制定一個(gè)script標(biāo)準(zhǔn)勢(shì)在必行。ECMAScript就是規(guī)定了能適應(yīng)于各種宿主環(huán)境的script核心語法規(guī)則。一個(gè)完整的javascript庫包括三部分:ECMAScript、DOM、BOM。
Ø 原始值:是存儲(chǔ)在棧中的簡(jiǎn)單數(shù)據(jù)段,也就是說,他們的值直接存儲(chǔ)在變量訪問的內(nèi)存空間。
Ø 引用值:是存儲(chǔ)在堆中的對(duì)象,也就是說,存儲(chǔ)在變量處的值是一個(gè)指針,指向存儲(chǔ)對(duì)象的內(nèi)存處。
Ø 有5中原始值:String、Number、 Object 、undefined 、boolean
Undefined 聲明的變量未初始化;
Null 表示尚未存在的對(duì)象;
Number 5個(gè)特殊值也屬于此類型:Number.max_value;Number.min_value;Number.positive_infinity;
Number.negative_infinity;NAN。
相關(guān)的方法有:isFinit()、isNaN()。
Ø typeOf 檢查變量類型;intenseOf 檢測(cè)對(duì)象類型。
Ø 5種引用類型:
Number類型相關(guān)方法:paserInt() 、paserFloat() 、toFixed()、toExponential()、toPrecision()。
String類型包含的常用方法有:charAt() 、charCodeAt()、 indexOf() 、lastIndexOf()、 splice()、 contact() 、lowerCase() 、toUpperCase()。
Ø 函數(shù)理解:JS中的函數(shù)其實(shí)是一個(gè)功能完整的對(duì)象,類Function可以創(chuàng)建任何類型的函數(shù),也即對(duì)象,對(duì)象名或叫函數(shù)名只是一個(gè)指向?qū)ο蟮闹羔槪院瘮?shù)名可以做為參數(shù)傳遞給另外一個(gè)函數(shù)。
第三章 對(duì)象基礎(chǔ)
JS中有沒有類,為何說JS中沒有真正的類?什么才叫正式的類?
JS中有三種對(duì)象:本地對(duì)象、內(nèi)置對(duì)象、宿主對(duì)象。
本地對(duì)象:獨(dú)立于宿主環(huán)境的ECMAScript定義的對(duì)象(類?)最常用的有Array和Date類。
Ø Array類:可以聲明一個(gè)變量直接進(jìn)行附值,但是不能用數(shù)組的一些方法?(試驗(yàn))數(shù)組Array對(duì)象包含的方法有:toString()、valueOf()、toLocalString()、join()、contact()、slice()、push、pop()、shift()、unshift()、reverse()、sort()、splice()。
Ø Date對(duì)象:以后再仔細(xì)的看。
內(nèi)置對(duì)象:類似JSP中的內(nèi)置對(duì)象,不需要開發(fā)者實(shí)例化即可使用,調(diào)用里面的方法也不需要指出對(duì)象的引用,當(dāng)然了,內(nèi)置對(duì)象都屬于本地對(duì)象,在JS中提供兩個(gè)內(nèi)置對(duì)象:global和Math對(duì)象。
Ø Global對(duì)象:它包含很多方法和和屬性,但用代碼來測(cè)試他又不是個(gè)對(duì)象,不解,為什么ECMA不叫他是個(gè)對(duì)象。它包含的方法有:siNan()、isFinite()、parseInt()、parseFloat()、encodeURL()、decodeURL()、eval()。JS提供的一些特殊值及所有本地對(duì)象的構(gòu)造函數(shù)都是Global對(duì)象的屬性,它包含的特殊值有:undefined、NaN、infinity、Object、Array、Function、Boolean、String、Number、Date、RegExp、Error…….and so on。
Ø Math對(duì)象:一發(fā)很復(fù)雜、很有用、必須要熟記其所有方法的對(duì)象。它包含很多屬性,大多是數(shù)學(xué)計(jì)算時(shí)的特殊值,例如:E、LN10、LOG2、Log10E、PI、SQRT1_2、sqrt2。它包含的方法有:min()、max()、abs()、random(),舍入操作的ceil()、floor()、round(),與指數(shù)有關(guān)的方法exp()、log()、pow()、sqrt()及全部的三角函數(shù)求值方法。
JS中所有的方法和屬性都是public類型的。
在JS中,對(duì)象名只是一個(gè)引用,指向?qū)ο蟮膬?nèi)存地址。在JAVA中每個(gè)對(duì)象都獨(dú)立站用一快內(nèi)存空間,變量名即是對(duì)象的存儲(chǔ)處?
在ECMAScript中沒有StringBuffer對(duì)象,要通過自己編寫代碼來創(chuàng)建具有此功能的對(duì)象。用Array對(duì)象可以使用同樣的功能。
ProtoType對(duì)象的所有屬性和方法都會(huì)被傳遞給那個(gè)類的所有實(shí)例。
每個(gè)對(duì)象都有ProtoType屬性,可以通過它更改或添加任何本地、內(nèi)置對(duì)象的方法。
定義類(對(duì)象):有5種常用的方式,它們分別是構(gòu)造函數(shù)方式、原型方式、混合的構(gòu)造函數(shù)/原型方式、動(dòng)態(tài)原型方式、混合工廠方式。我覺得混合方式和動(dòng)態(tài)原都比較好,在對(duì)象比較復(fù)雜的情況易用混合方式,在對(duì)象定義簡(jiǎn)單的情況下用動(dòng)態(tài)原型方式更為直觀。
第四章 繼承
為了安全,不能繼承本地類和宿主類?
JS中沒有真正意義上的繼承,都是模仿繼承機(jī)制,常用的有三模仿繼承的機(jī)制:對(duì)象冒充、call()方法、apply()方法(實(shí)驗(yàn))、原型鏈方式(實(shí)驗(yàn))。通過比較還是用混合的方式比較好,用call()方法繼承屬性,用原型鏈方式繼承方法。
另外利用第三方JS庫可以使用其他的繼承方式,如:zInherit、xbObjects。
第五章 瀏覽器中的JS
前三張都是對(duì)核心ECMAScript的討論,以下章節(jié)都是與WEB有關(guān)的內(nèi)容。
在XHTML中大于、小于等特殊方法不能被正確識(shí)別?(P115)(實(shí)驗(yàn))
BOM:提供了獨(dú)立于內(nèi)容而與瀏覽器窗口進(jìn)行交互的對(duì)象。
Ø Window對(duì)象表示整個(gè)瀏覽器窗口。如果使用框架,每個(gè)框架都有自己的window對(duì)象,存放在Frames集合中,調(diào)用window對(duì)象的屬性和方法時(shí),不必要明確引用它。
Window對(duì)象的方法有:
窗口操作:moveBy()、moveTo()、resizeBy()、resizeTo()。
獲取位置和大小:screenLeft()、screenTop()。
導(dǎo)航和打開新窗口:用JS可以導(dǎo)航到指定的URL,并用window.open()方法打開窗口,該方法接受4個(gè)參數(shù),即要載入頁面的URL、新窗口的名字、特性字符串、是否替換當(dāng)前頁面的Boolean值。這個(gè)方法返回一個(gè)window對(duì)象的引用值。Openner屬性存放打開它的窗口的引用。
彈出系統(tǒng)對(duì)話框:alert()、confirm()、prompt()。
狀態(tài)欄:window對(duì)象的兩個(gè)屬性status、defaultStatus。
暫停和時(shí)間間隔:setTimeOut()、clearTimeout()、setInerval()、clearInterval()。(練習(xí)使用)
歷史:history對(duì)象完成。
Ø Document對(duì)象:由一系列的集合組成,如anchors、applets、embeds、forms、images、links。方法有write()、writeln()、open()、close()。
Ø Location對(duì)象:表示載入窗口的URL,他也可以解析URL,它包含的屬性有hash、host、hostname、pathname、port、protocol、search。方法有:replace()、reload()、toString()。
Ø Navigator對(duì)象:一個(gè)重要的用途就是檢測(cè)瀏覽器類型及版本,在chapter 8將詳細(xì)介紹。
Ø Screen對(duì)象:用于用戶獲取屏幕信息,它包含的屬性有availHeight、availWidth、colorDepth、Height、width。
第六章 DOM基礎(chǔ)
起源:XML是從SML派生而來的,SGML有許多奇怪的語法規(guī)則,解析SGML文檔非常困難。XML去掉了SGML許多另人頭疼的隨意語法,使解析XML變得容易。XML的主要目的是使用文本以結(jié)構(gòu)化的方式來表示數(shù)據(jù)。ML—標(biāo)記語言。(待續(xù))
第八章 檢測(cè)瀏覽器和操作系統(tǒng)
Ø 對(duì)象特征檢測(cè)法:判斷瀏覽器是否支持某對(duì)象/特征,而不在乎瀏覽器的真正身份,此方法簡(jiǎn)單,問題是不能檢測(cè)瀏覽器的具體類型。
Ø User_agent檢測(cè)法:原理:每個(gè)訪問望阿站的程序都會(huì)提供一個(gè)user_agent字符串來向服務(wù)器確定它的身份。用mavigator.userAgent可以得到此字符串,這個(gè)字符串是user_agent方式檢測(cè)瀏覽器的基礎(chǔ)。
當(dāng)然了記住各瀏覽器的user_agent字符串將給你帶來編程時(shí)的方便,但是好象不容易。(有必要嗎?)
user_agent字符串簡(jiǎn)史:了解它,可以讓你更容易第記住瀏覽器的user_agent字符串。
Ø 瀏覽器檢測(cè)腳本:此部分屬于公用代碼,應(yīng)該寫到一個(gè)公用文件中,每個(gè)項(xiàng)目都可以直接用,我所參與的項(xiàng)目中有這些腳本文件嗎?
用navigator.appVersion不就可以確定瀏覽器版本了嗎?為什么還要用user_agent方式獲取?
書中只討論windows、macintosh平臺(tái)?
練習(xí):寫一個(gè)用于比較來年感個(gè)版本號(hào)大小的函數(shù);寫一個(gè)用于檢測(cè)是否為IE和檢測(cè)IE版本號(hào)的函數(shù)。
Ø OS檢測(cè)腳本:用navigator.platform來檢測(cè)OS。
練習(xí):寫一個(gè)檢測(cè)windows版本的程序。
第九章 事件
事件流:IE的冒泡型事件留、Netscape的捕獲型事件留及DOM事件留。
事件處理函數(shù):給元素附加事件處理函數(shù)在IE和DOM有不同的實(shí)現(xiàn)方式。在IE中每個(gè)元素都有attachEvent()和detachEvent()方法;在DOM中有對(duì)應(yīng)的addEventListener()、removeEventListener()方法。
事件對(duì)象:包含發(fā)生事件時(shí)鼠標(biāo)、鍵盤等信息的對(duì)象。
在IE中這些信息被包含在event對(duì)象中。熟記event對(duì)象的屬性和方法。P234
事件類型:
Ø 熟記鼠標(biāo)事件:click、dblclick、mouseout、mouseover、mouseup、mousemove。
每個(gè)鼠標(biāo)事件都會(huì)給event對(duì)象的以下屬性添入值:坐標(biāo)屬性、Type屬性、srcElement屬性、shiftKey ctrlKey altKey、button屬性。鼠標(biāo)事件的順序。
此節(jié)內(nèi)容可以結(jié)合第十一章內(nèi)容學(xué)習(xí)。
Ø 鍵盤事件:keyDown—鍵盤上按下某鍵時(shí)觸發(fā),針對(duì)所有鍵。keyPress—按下鍵并產(chǎn)生一個(gè)字符時(shí)觸發(fā),所以按下shift、art、ctrl及方向鍵時(shí)并不會(huì)觸發(fā)此事件。
HMTL事件:load事件、unload事件、select事件、change事件、resize事件、scroll事件、blur事件、body的兩個(gè)屬性—scrollLeft和scrollTop。結(jié)合第十一章學(xué)習(xí)。
第十章 高級(jí)DOM技術(shù)
CSS中樣式特性名字的書寫與JS中不同,在Style對(duì)象中,兩個(gè)單詞的樣式表示方法是匈牙利表示法。
Style對(duì)象可以操縱內(nèi)聯(lián)樣式的值。它有個(gè)cssText屬性,存儲(chǔ)此CSS樣式的字符串。
DOM樣式的方法:
提示:此類方法在IE中不實(shí)用。DOM中Style對(duì)象中包含方法:getPropertyValue()、getpropertyPriority()、item()、removeProperty()、serProperty()。
自定義鼠標(biāo)提示:原意—鼠標(biāo)移到某元素上顯示title提示;
現(xiàn)意—當(dāng)鼠標(biāo)移到某元素上時(shí),讓某他原本隱藏的DIV顯示在某特定位置(一般在鼠標(biāo)旁邊)
可折疊區(qū)域:介紹一個(gè)具體應(yīng)用。很不錯(cuò)的,練習(xí)。
訪問樣式表:樣式表—在<style/>元素中或在外部樣式表中定義的CSS樣式。
Document.styleSheets可以獲得樣式表的引用。它有一些常用的屬性—disabled、type等。
樣式表引用對(duì)象有個(gè)cssRules或rules屬性,它包含樣式表中所有的CSS規(guī)則,它是一個(gè)集合。
最終樣式:它由所有內(nèi)聯(lián)樣式和CSS規(guī)則計(jì)算出的最終結(jié)果,也即其作用的CSS樣式元素集合。在IE中可以用style.currentStyle來獲得。
innerText和innerHTML
不解:oDiv.innerText = oDiv.innerText將刪除oDiv標(biāo)簽。
IE中的范圍:
創(chuàng)建范圍—creatTextRange();
選擇某個(gè)區(qū)域:findText();
移動(dòng)選區(qū):move()、moveStart()、moveEnd()、expand();
與范圍內(nèi)容交互:text屬性和pasteHTML()方法;
折疊范圍:collapse() 就是清楚remove、clear的意思?
比較范圍:compareEndPoints()、isEqual()、isRange();
復(fù)制范圍:duplicate();
范圍的引用:值得一看,30秒鐘。
第十一章 表單和數(shù)據(jù)完整性
<form/>元素的特性:method、action、enctype、accept、accept_charset。
表單元素的共性:disabled、form、blur、focus()、onblur()、onfocus()。
僅提交一次:當(dāng)點(diǎn)擊提交按鈕后禁用它,是用戶不會(huì)重復(fù)提交多次。
不能用submit按鈕并用onclick禁用,因?yàn)樵诒韱翁峤磺耙呀?jīng)被禁用,這講導(dǎo)致表單不被提交,怎么用普通的button就可以?
Reset:即使使用reset()方法, onreset事件函數(shù)仍會(huì)被觸發(fā)。
文本框事件:blur、focus、change、select,其中change事件是在文本框失去焦點(diǎn)后才被觸發(fā)。
自動(dòng)選中文本:一個(gè)具體應(yīng)用。當(dāng)獲到焦點(diǎn)時(shí)便選中文本。
自動(dòng)切換到下一個(gè):一個(gè)具體應(yīng)用。代碼寫得不錯(cuò),值得一看。
限制textarea的字符數(shù):雖然textarea不能用maxlength屬性來限制最大輸入長(zhǎng)度,但仍可以設(shè)置manlength屬性可,并可以通過getAttibute()來獲取這個(gè)值。
允許/阻止文本框中的字符:阻止無效字符,只允許輸入有效字符。看代碼,挺有用的。
不要忘記粘貼:禁止粘貼;失去焦點(diǎn)時(shí)進(jìn)行驗(yàn)證。
使用上下方向鍵操作數(shù)字文本(自增、自減):
列表和組合框:只要給 <select/>元素添加size特性就可以使組合框變?yōu)榱斜怼?span>Multiple屬性用于設(shè)置是否可多選,默認(rèn)不能。
刪除選項(xiàng):將某想置為null;用remove()方法。
移動(dòng)選項(xiàng):可以直接從一個(gè)列表框移到另一個(gè)列表框?(實(shí)驗(yàn))
重新排序選項(xiàng):重要用到DOM中的insertBefore()函數(shù)。
自動(dòng)提示文本框:創(chuàng)建匹配的Array數(shù)組;獲取匹配的只的Array;將選中的條目添加到文本框。再看代碼,寫得很好。
第十二章 對(duì)表格排序
這一章探索了如何JavaScript將很多基于服務(wù)器端的功能轉(zhuǎn)移到客戶端,即對(duì)HTML表格進(jìn)行排序。這一章完全沒有新的語法知識(shí),完全是對(duì)以前章節(jié)知識(shí)的應(yīng)用。練習(xí)用一下一切OK。
知識(shí)要點(diǎn):Array對(duì)象的sort()方法可以接受一個(gè)客戶化的比較函數(shù)作為參數(shù)。
建立一個(gè)能處理各種數(shù)據(jù)類型的比較函數(shù)。
Reverse()倒序。
用<、> 可以對(duì)String、Date、Number類型的數(shù)據(jù)進(jìn)行比較?
可以為HTML元素添加自定義特性。
第十三章 拖放
系統(tǒng)拖放:由操作系統(tǒng)處理完成的拖放行為;
模擬拖放:創(chuàng)建可以跟著鼠標(biāo)移動(dòng)的絕對(duì)定位層。
另外還可以利用aDragDrop庫來實(shí)現(xiàn)拖放功能。
第十四章 錯(cuò)誤處理
JS中的錯(cuò)誤:發(fā)生在解析(編譯)時(shí)的語法錯(cuò)誤;
JS中的異常:在運(yùn)行時(shí)發(fā)生。如window.yangaiyou();語法正確,但會(huì)發(fā)生異常。
l onerror對(duì)象:在window對(duì)象和圖象對(duì)象?上都有onerror事件處理函數(shù),當(dāng)頁面發(fā)生錯(cuò)誤時(shí),onerror事件將在window對(duì)象上觸發(fā)。當(dāng)頁面上的圖象不能載入時(shí)會(huì)在image對(duì)象上觸發(fā)。
可以這樣定義onerror函數(shù)
window.onerror = function(sMessage,sUrl,sLine){};
onerror函數(shù)的三個(gè)參數(shù)用于確定錯(cuò)誤確切的信息,代表的意思依次為:錯(cuò)誤信息;發(fā)生錯(cuò)誤的文件;發(fā)生錯(cuò)誤的行號(hào)。
l Try...catch語句:
Catch語句捕獲的是一個(gè)Error對(duì)象,他有name和message屬性,name指明錯(cuò)誤的類型或叫名字;message指明具體的錯(cuò)誤信息。
也可以用類似throw new Error(“發(fā)生了錯(cuò)誤!”)的語句來拋出異常信息。
第十五章 javascript中的XML
l IE中對(duì)XML DOM的支持:是基于ActiveX的MXXML庫。用ActiveXObject類來創(chuàng)建ActiveX對(duì)象,形如
Var oXmlDom = new ActiveXObject(“Microsoft.XmlDom”);
參數(shù)為要實(shí)例化的ActiveX對(duì)象的字符串代號(hào)。
如何確保使用最新的XML DOM?
創(chuàng)建XML DOM 對(duì)象的下一步自然就是載入XML文件,XML DOM提供了兩種方法來載入XML文件:load()、loadXML()。前者用于從服務(wù)器端載入XML文件;后者可以直接輸入字符串來載入。如:
oXmlDom.load(“./treeAction.do”);
執(zhí)行完這行代碼oXmlDom對(duì)象就會(huì)包含能表示XML文件結(jié)構(gòu)的一個(gè)DOM文擋,這樣就可以使用DOM所有的特性和方法了。
默認(rèn)采用異步方式載入,當(dāng)readyState值發(fā)生變化時(shí)會(huì)觸發(fā)onreadystatechange函數(shù),當(dāng)其值為4時(shí)表示XML文件已完全載入,通常這時(shí)就要調(diào)用回調(diào)函數(shù)。
我們應(yīng)該在XML文件載入后立即檢查錯(cuò)誤,錯(cuò)誤信息都包含在parseError對(duì)象中,我們可以自己創(chuàng)建錯(cuò)誤提示,通常是由于XML文件格式錯(cuò)誤造成的。
AJAX必備知識(shí)。
l xPath小語言:
它提供了如何定位一個(gè)或多個(gè)結(jié)點(diǎn)的功能。它分兩部分:上下文結(jié)點(diǎn);結(jié)點(diǎn)模式。前者給出要匹配文檔的開始位置;后者是一個(gè)字符串形式的選擇器,可以想象成正則表達(dá)式。
IE中提供selectNodes()方法來返回匹配的結(jié)點(diǎn)集合,參數(shù)為要匹配的字符串(正則表達(dá)式)。形如:
oXmlDom.documentElement.selectNodes(“employee/name”);
選擇了所有<employee/>元素下的<name/>元素。
l XSLT 可擴(kuò)展樣式表語言轉(zhuǎn)換:
XSLT可以對(duì)XML文件進(jìn)行操作,將其轉(zhuǎn)換成其他的文本格式,入HTML。XSLT文件稱為樣式表,由一些模板組成,通過為不同元素和條件定義模板,XSLT成了XML文件的轉(zhuǎn)換器。
第十六章 客戶端與服務(wù)器端的通信
第十七章 Web服務(wù)
第十八章 與插件進(jìn)行交互
第十九章 部署問題
第二十章 JS的文萊
posted on 2007-07-01 13:50
楊愛友 閱讀(1948)
評(píng)論(10) 編輯 收藏 所屬分類:
java相關(guān)技術(shù)