美麗涵涵童裝店--說我博客名字,給你們打折!
          隨筆 - 82  文章 - 266  trackbacks - 0
          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234


          點擊這里給楊愛友發(fā)消息
          美麗涵涵童裝店
          說我博客名字,給你們打折!

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章檔案

          好友的BLOG

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

          序言

          寫本文的目的是對最近看過的篇幅進(jìn)行簡單的總結(jié),把我認(rèn)為重點應(yīng)該記住的東西寫出來,方便以后查看回憶。

          ECMAScript基礎(chǔ)

          Ø        20世紀(jì)90年代,為了提高系統(tǒng)運行速度,各大廠商分別開發(fā)了自己的script腳本,用于在客戶端進(jìn)行數(shù)據(jù)校驗等功能,但開發(fā)出來的網(wǎng)頁不能夠跨平臺運行。隨著業(yè)界的擔(dān)心,制定一個script標(biāo)準(zhǔn)勢在必行。ECMAScript就是規(guī)定了能適應(yīng)于各種宿主環(huán)境的script核心語法規(guī)則。一個完整的javascript庫包括三部分:ECMAScript、DOM、BOM。

          Ø        原始值:是存儲在棧中的簡單數(shù)據(jù)段,也就是說,他們的值直接存儲在變量訪問的內(nèi)存空間。

          Ø        引用值:是存儲在堆中的對象,也就是說,存儲在變量處的值是一個指針,指向存儲對象的內(nèi)存處。

          Ø         5中原始值:String、Number、 Object undefined 、boolean

          Undefined 聲明的變量未初始化;

          Null 表示尚未存在的對象;

          Number 5個特殊值也屬于此類型:Number.max_value;Number.min_valueNumber.positive_infinity
          Number.negative_infinity;NAN。

          相關(guān)的方法有:isFinit()、isNaN()。

          Ø        typeOf 檢查變量類型;intenseOf 檢測對象類型。

          Ø        5種引用類型:

          Number類型相關(guān)方法:paserInt() 、paserFloat() 、toFixed()、toExponential()、toPrecision()
          String類型包含的常用方法有:charAt() 、charCodeAt()、 indexOf() 、lastIndexOf() splice()、 contact() 、lowerCase() toUpperCase()。

          Ø         函數(shù)理解:JS中的函數(shù)其實是一個功能完整的對象,類Function可以創(chuàng)建任何類型的函數(shù),也即對象,對象名或叫函數(shù)名只是一個指向?qū)ο蟮闹羔?,所以函?shù)名可以做為參數(shù)傳遞給另外一個函數(shù)。

          第三章 對象基礎(chǔ)

          JS中有沒有類,為何說JS中沒有真正的類?什么才叫正式的類?

          JS中有三種對象:本地對象、內(nèi)置對象、宿主對象。

          本地對象:獨立于宿主環(huán)境的ECMAScript定義的對象(類?)最常用的有ArrayDate類。

          Ø         Array類:可以聲明一個變量直接進(jìn)行附值,但是不能用數(shù)組的一些方法?(試驗)數(shù)組Array對象包含的方法有:toString()、valueOf()toLocalString()、join()contact()slice()、pushpop()shift()、unshift()、reverse()、sort()、splice()。

          Ø         Date對象:以后再仔細(xì)的看。

          內(nèi)置對象:類似JSP中的內(nèi)置對象,不需要開發(fā)者實例化即可使用,調(diào)用里面的方法也不需要指出對象的引用,當(dāng)然了,內(nèi)置對象都屬于本地對象,在JS中提供兩個內(nèi)置對象:globalMath對象。

          Ø         Global對象:它包含很多方法和和屬性,但用代碼來測試他又不是個對象,不解,為什么ECMA不叫他是個對象。它包含的方法有:siNan()isFinite()parseInt()、parseFloat()、encodeURL()、decodeURL()、eval()。JS提供的一些特殊值及所有本地對象的構(gòu)造函數(shù)都是Global對象的屬性,它包含的特殊值有:undefined、NaN、infinity、ObjectArray、FunctionBoolean、String、NumberDate、RegExp、Error…….and so on。

          Ø         Math對象:一發(fā)很復(fù)雜、很有用、必須要熟記其所有方法的對象。它包含很多屬性,大多是數(shù)學(xué)計算時的特殊值,例如:E、LN10LOG2、Log10EPI、SQRT1_2、sqrt2。它包含的方法有:min()、max()、abs()、random(),舍入操作的ceil()、floor()、round(),與指數(shù)有關(guān)的方法exp()、log()、pow()、sqrt()及全部的三角函數(shù)求值方法。

          JS中所有的方法和屬性都是public類型的。

          JS中,對象名只是一個引用,指向?qū)ο蟮膬?nèi)存地址。JAVA中每個對象都獨立站用一快內(nèi)存空間,變量名即是對象的存儲處?

          ECMAScript中沒有StringBuffer對象,要通過自己編寫代碼來創(chuàng)建具有此功能的對象。用Array對象可以使用同樣的功能。

          ProtoType對象的所有屬性和方法都會被傳遞給那個類的所有實例。

          每個對象都有ProtoType屬性,可以通過它更改或添加任何本地、內(nèi)置對象的方法。

          定義類(對象):有5種常用的方式,它們分別是構(gòu)造函數(shù)方式、原型方式、混合的構(gòu)造函數(shù)/原型方式、動態(tài)原型方式、混合工廠方式。我覺得混合方式和動態(tài)原都比較好,在對象比較復(fù)雜的情況易用混合方式,在對象定義簡單的情況下用動態(tài)原型方式更為直觀。

          第四章 繼承

          為了安全,不能繼承本地類和宿主類?

          JS中沒有真正意義上的繼承,都是模仿繼承機(jī)制,常用的有三模仿繼承的機(jī)制:對象冒充、call()方法、apply()方法(實驗)、原型鏈方式(實驗)。通過比較還是用混合的方式比較好,用call()方法繼承屬性,用原型鏈方式繼承方法。

          另外利用第三方JS庫可以使用其他的繼承方式,如:zInheritxbObjects

          第五章 瀏覽器中的JS

          前三張都是對核心ECMAScript的討論,以下章節(jié)都是與WEB有關(guān)的內(nèi)容。

          XHTML中大于、小于等特殊方法不能被正確識別?(P115(實驗)

          BOM:提供了獨立于內(nèi)容而與瀏覽器窗口進(jìn)行交互的對象。

          Ø         Window對象表示整個瀏覽器窗口。如果使用框架,每個框架都有自己的window對象,存放在Frames集合中,調(diào)用window對象的屬性和方法時,不必要明確引用它。

          Window對象的方法有:

          窗口操作:moveBy()、moveTo()、resizeBy()resizeTo()。

          獲取位置和大?。?/span>screenLeft()screenTop()。

          導(dǎo)航和打開新窗口:JS可以導(dǎo)航到指定的URL,并用window.open()方法打開窗口,該方法接受4個參數(shù),即要載入頁面的URL、新窗口的名字、特性字符串、是否替換當(dāng)前頁面的Boolean值。這個方法返回一個window對象的引用值。Openner屬性存放打開它的窗口的引用。

          彈出系統(tǒng)對話框:alert()、confirm()、prompt()。

          狀態(tài)欄:window對象的兩個屬性statusdefaultStatus。

          暫停和時間間隔:setTimeOut()clearTimeout()、setInerval()、clearInterval()。(練習(xí)使用)

          歷史:history對象完成。

          Ø         Document對象:由一系列的集合組成,如anchors、appletsembedsformsimageslinks。方法有write()writeln()、open()、close()

          Ø         Location對象:表示載入窗口的URL,他也可以解析URL,它包含的屬性有hash、host、hostname、pathname、port、protocol、search。方法有:replace()reload()toString()

          Ø         Navigator對象:一個重要的用途就是檢測瀏覽器類型及版本,在chapter 8將詳細(xì)介紹。

          Ø         Screen對象:用于用戶獲取屏幕信息,它包含的屬性有availHeightavailWidthcolorDepth、Height、width

          第六章 DOM基礎(chǔ)

           

          起源:XML是從SML派生而來的,SGML有許多奇怪的語法規(guī)則,解析SGML文檔非常困難。XML去掉了SGML許多另人頭疼的隨意語法,使解析XML變得容易。XML的主要目的是使用文本以結(jié)構(gòu)化的方式來表示數(shù)據(jù)。ML—標(biāo)記語言。(待續(xù))

          第八章 檢測瀏覽器和操作系統(tǒng)

           

          Ø         對象特征檢測法:判斷瀏覽器是否支持某對象/特征,而不在乎瀏覽器的真正身份,此方法簡單,問題是不能檢測瀏覽器的具體類型。

          Ø         User_agent檢測法:原理:每個訪問望阿站的程序都會提供一個user_agent字符串來向服務(wù)器確定它的身份。用mavigator.userAgent可以得到此字符串,這個字符串是user_agent方式檢測瀏覽器的基礎(chǔ)。

          當(dāng)然了記住各瀏覽器的user_agent字符串將給你帶來編程時的方便,但是好象不容易。(有必要嗎?)

          user_agent字符串簡史:了解它,可以讓你更容易第記住瀏覽器的user_agent字符串。

          Ø         瀏覽器檢測腳本:此部分屬于公用代碼,應(yīng)該寫到一個公用文件中,每個項目都可以直接用,我所參與的項目中有這些腳本文件嗎?

          navigator.appVersion不就可以確定瀏覽器版本了嗎?為什么還要用user_agent方式獲?。?br>

          書中只討論windowsmacintosh平臺?

          練習(xí):寫一個用于比較來年感個版本號大小的函數(shù);寫一個用于檢測是否為IE和檢測IE版本號的函數(shù)。

          Ø         OS檢測腳本:用navigator.platform來檢測OS。

          練習(xí):寫一個檢測windows版本的程序。

          第九章 事件

          事件流:IE的冒泡型事件留、Netscape的捕獲型事件留及DOM事件留。

          事件處理函數(shù):給元素附加事件處理函數(shù)在IEDOM有不同的實現(xiàn)方式。在IE中每個元素都有attachEvent()detachEvent()方法;在DOM中有對應(yīng)的addEventListener()、removeEventListener()方法。

          事件對象:包含發(fā)生事件時鼠標(biāo)、鍵盤等信息的對象。

          IE中這些信息被包含在event對象中。熟記event對象的屬性和方法。P234

          事件類型:

          Ø         熟記鼠標(biāo)事件:clickdblclickmouseoutmouseover、mouseupmousemove

          每個鼠標(biāo)事件都會給event對象的以下屬性添入值:坐標(biāo)屬性、Type屬性、srcElement屬性、shiftKey ctrlKey altKeybutton屬性。鼠標(biāo)事件的順序。

          此節(jié)內(nèi)容可以結(jié)合第十一章內(nèi)容學(xué)習(xí)。

          Ø         鍵盤事件:keyDown—鍵盤上按下某鍵時觸發(fā),針對所有鍵。keyPress—按下鍵并產(chǎn)生一個字符時觸發(fā),所以按下shift、artctrl及方向鍵時并不會觸發(fā)此事件。

          HMTL事件load事件、unload事件、select事件、change事件、resize事件、scroll事件blur事件、body的兩個屬性—scrollLeftscrollTop。結(jié)合第十一章學(xué)習(xí)。

          第十章 高級DOM技術(shù)

          CSS中樣式特性名字的書寫與JS中不同,在Style對象中,兩個單詞的樣式表示方法是匈牙利表示法。

          Style對象可以操縱內(nèi)聯(lián)樣式的值。它有個cssText屬性,存儲此CSS樣式的字符串。

          DOM樣式的方法:

          提示:此類方法在IE中不實用。DOMStyle對象中包含方法:getPropertyValue()getpropertyPriority()item()removeProperty()、serProperty()。

          自定義鼠標(biāo)提示:原意鼠標(biāo)移到某元素上顯示title提示;

          現(xiàn)意當(dāng)鼠標(biāo)移到某元素上時,讓某他原本隱藏的DIV顯示在某特定位置(一般在鼠標(biāo)旁邊)

          可折疊區(qū)域:介紹一個具體應(yīng)用。很不錯的,練習(xí)。

          訪問樣式表:樣式表<style/>元素中或在外部樣式表中定義的CSS樣式。

          Document.styleSheets可以獲得樣式表的引用。它有一些常用的屬性—disabled、type等。

          樣式表引用對象有個cssRulesrules屬性,它包含樣式表中所有的CSS規(guī)則,它是一個集合。

          最終樣式:它由所有內(nèi)聯(lián)樣式和CSS規(guī)則計算出的最終結(jié)果,也即其作用的CSS樣式元素集合。在IE中可以用style.currentStyle來獲得。

          innerTextinnerHTML

          不解:oDiv.innerText = oDiv.innerText將刪除oDiv標(biāo)簽。

          IE中的范圍:

          創(chuàng)建范圍—creatTextRange();

          選擇某個區(qū)域:findText()

          移動選區(qū):move()、moveStart()、moveEnd()、expand();

          與范圍內(nèi)容交互:text屬性和pasteHTML()方法;

          折疊范圍:collapse() 就是清楚removeclear的意思?

          比較范圍:compareEndPoints()、isEqual()isRange();

          復(fù)制范圍:duplicate();

          范圍的引用:值得一看,30秒鐘。

          第十一章 表單和數(shù)據(jù)完整性

          <form/>元素的特性:method、actionenctype、accept、accept_charset。

          表單元素的共性:disabled、formblur、focus()、onblur()onfocus()。

          僅提交一次:當(dāng)點擊提交按鈕后禁用它,是用戶不會重復(fù)提交多次。

          不能用submit按鈕并用onclick禁用,因為在表單提交前已經(jīng)被禁用,這講導(dǎo)致表單不被提交,怎么用普通的button就可以?

          Reset:即使使用reset()方法, onreset事件函數(shù)仍會被觸發(fā)。

          文本框事件:blur、focus、change、select,其中change事件是在文本框失去焦點后才被觸發(fā)。

          自動選中文本:一個具體應(yīng)用。當(dāng)獲到焦點時便選中文本。

          自動切換到下一個:一個具體應(yīng)用。代碼寫得不錯,值得一看。

          限制textarea的字符數(shù):雖然textarea不能用maxlength屬性來限制最大輸入長度,但仍可以設(shè)置manlength屬性可,并可以通過getAttibute()來獲取這個值。

          允許/阻止文本框中的字符:阻止無效字符,只允許輸入有效字符??创a,挺有用的。

          不要忘記粘貼:禁止粘貼;失去焦點時進(jìn)行驗證。

          使用上下方向鍵操作數(shù)字文本(自增、自減):

          列表和組合框:只要給 <select/>元素添加size特性就可以使組合框變?yōu)榱斜怼?span>Multiple屬性用于設(shè)置是否可多選,默認(rèn)不能。

          刪除選項:將某想置為null;用remove()方法。

          移動選項:可以直接從一個列表框移到另一個列表框?(實驗)

          重新排序選項:重要用到DOM中的insertBefore()函數(shù)。

          自動提示文本框:創(chuàng)建匹配的Array數(shù)組;獲取匹配的只的Array;將選中的條目添加到文本框。再看代碼,寫得很好。
           

          第十二章 對表格排序

          這一章探索了如何JavaScript將很多基于服務(wù)器端的功能轉(zhuǎn)移到客戶端,即對HTML表格進(jìn)行排序。這一章完全沒有新的語法知識,完全是對以前章節(jié)知識的應(yīng)用。練習(xí)用一下一切OK。

          知識要點:Array對象的sort()方法可以接受一個客戶化的比較函數(shù)作為參數(shù)。

          建立一個能處理各種數(shù)據(jù)類型的比較函數(shù)。

          Reverse()倒序。

          <> 可以對String、Date、Number類型的數(shù)據(jù)進(jìn)行比較?

          可以為HTML元素添加自定義特性。

          第十三章 拖放

          系統(tǒng)拖放:由操作系統(tǒng)處理完成的拖放行為;

          模擬拖放:創(chuàng)建可以跟著鼠標(biāo)移動的絕對定位層。

          另外還可以利用aDragDrop庫來實現(xiàn)拖放功能。

          第十四章 錯誤處理

           

          JS中的錯誤:發(fā)生在解析(編譯)時的語法錯誤;

          JS中的異常:在運行時發(fā)生。如window.yangaiyou();語法正確,但會發(fā)生異常。

          l         onerror對象:在window對象和圖象對象?上都有onerror事件處理函數(shù),當(dāng)頁面發(fā)生錯誤時,onerror事件將在window對象上觸發(fā)。當(dāng)頁面上的圖象不能載入時會在image對象上觸發(fā)。

          可以這樣定義onerror函數(shù)

          window.onerror = function(sMessage,sUrl,sLine){};

          onerror函數(shù)的三個參數(shù)用于確定錯誤確切的信息,代表的意思依次為:錯誤信息;發(fā)生錯誤的文件;發(fā)生錯誤的行號。

          l         Try...catch語句:

          Catch語句捕獲的是一個Error對象,他有namemessage屬性,name指明錯誤的類型或叫名字;message指明具體的錯誤信息。

          也可以用類似throw new Error(“發(fā)生了錯誤!”)的語句來拋出異常信息。

          第十五章 javascript中的XML


          l        
          IE中對XML DOM的支持:是基于ActiveXMXXML庫。用ActiveXObject類來創(chuàng)建ActiveX對象,形如

          Var oXmlDom = new ActiveXObject(“Microsoft.XmlDom”);

          參數(shù)為要實例化的ActiveX對象的字符串代號。

          如何確保使用最新的XML DOM?

          創(chuàng)建XML DOM 對象的下一步自然就是載入XML文件,XML DOM提供了兩種方法來載入XML文件:load()loadXML()。前者用于從服務(wù)器端載入XML文件;后者可以直接輸入字符串來載入。如:

          oXmlDom.load(“./treeAction.do”);

          執(zhí)行完這行代碼oXmlDom對象就會包含能表示XML文件結(jié)構(gòu)的一個DOM文擋,這樣就可以使用DOM所有的特性和方法了。

          默認(rèn)采用異步方式載入,當(dāng)readyState值發(fā)生變化時會觸發(fā)onreadystatechange函數(shù),當(dāng)其值為4時表示XML文件已完全載入,通常這時就要調(diào)用回調(diào)函數(shù)。

          我們應(yīng)該在XML文件載入后立即檢查錯誤,錯誤信息都包含在parseError對象中,我們可以自己創(chuàng)建錯誤提示,通常是由于XML文件格式錯誤造成的。

          AJAX必備知識。

          l         xPath小語言:

          它提供了如何定位一個或多個結(jié)點的功能。它分兩部分:上下文結(jié)點;結(jié)點模式。前者給出要匹配文檔的開始位置;后者是一個字符串形式的選擇器,可以想象成正則表達(dá)式。

          IE中提供selectNodes()方法來返回匹配的結(jié)點集合,參數(shù)為要匹配的字符串(正則表達(dá)式)。形如:

          oXmlDom.documentElement.selectNodes(“employee/name”);

          選擇了所有<employee/>元素下的<name/>元素。

          l         XSLT 可擴(kuò)展樣式表語言轉(zhuǎn)換:

          XSLT可以對XML文件進(jìn)行操作,將其轉(zhuǎn)換成其他的文本格式,入HTML。XSLT文件稱為樣式表,由一些模板組成,通過為不同元素和條件定義模板,XSLT成了XML文件的轉(zhuǎn)換器。

          第十六章 客戶端與服務(wù)器端的通信

          第十七章 Web服務(wù)

          第十八章 與插件進(jìn)行交互

          第十九章 部署問題

          第二十章 JS的文萊

          posted on 2007-07-01 13:50 楊愛友 閱讀(1949) 評論(10)  編輯  收藏 所屬分類: java相關(guān)技術(shù)

          FeedBack:
          # re: javascript讀書筆記 2007-07-03 11:25 飄搖
          第一頁有個錯別字  回復(fù)  更多評論
            
          # re: javascript讀書筆記 2007-07-03 11:31 飄搖
          終于走向正路,哈哈 繼續(xù)努力!  回復(fù)  更多評論
            
          # re: javascript讀書筆記 2007-07-03 12:23 
          哪個字錯了里,給我改過來。  回復(fù)  更多評論
            
          # re: javascript讀書筆記 2007-07-04 08:55 飄搖
          寫本*問*的目的是對最近看過的篇幅進(jìn)行簡單的總結(jié),"問"對嗎  回復(fù)  更多評論
            
          # re: javascript讀書筆記 2007-07-04 16:57 飄搖
          打開一個網(wǎng)頁時 總是不斷的跳出好多網(wǎng)頁,但是沒死機(jī),這是為什么 ,該怎么辦  回復(fù)  更多評論
            
          # re: javascript讀書筆記 2007-07-04 17:02 
          或者裝個攔截工具,或者叫他們網(wǎng)站的開發(fā)者把代碼改一下,后者比較好,哈哈~~  回復(fù)  更多評論
            
          # re: javascript讀書筆記[未登錄] 2007-07-06 16:05 小祝
          呵呵~記得8號來接我哈~~  回復(fù)  更多評論
            
          # re: javascript讀書筆記 2007-07-06 16:24 
          盡量吧,單愿沒有忘記,哈哈  回復(fù)  更多評論
            
          # re: javascript讀書筆記 2007-10-26 08:16 fds
          fdsgfds  回復(fù)  更多評論
            
          # re: javascript讀書筆記 2008-01-15 09:52 小吳
          嚴(yán)重支持!??!寫的很好?。?!可見有一定的基礎(chǔ)??!但是進(jìn)步的空間還很大!!
          建議嘗試自己寫一個小框架(對提高設(shè)計能力有很大的幫助)  回復(fù)  更多評論
            
          美麗涵涵童裝店
          親,說我博客名字,給你們打折!
          主站蜘蛛池模板: 克拉玛依市| 旬阳县| 成都市| 东至县| 奉贤区| 陇南市| 虞城县| 哈密市| 钟祥市| 荔波县| 金溪县| 千阳县| 邮箱| 通城县| 龙州县| 南木林县| 长丰县| 濮阳县| 化州市| 沙洋县| 封开县| 汨罗市| 绍兴县| 喀喇沁旗| 和顺县| 堆龙德庆县| 宝山区| 满城县| 金阳县| 邵武市| 乌拉特中旗| 永修县| 盐池县| 荆门市| 嘉荫县| 神农架林区| 松桃| 黄浦区| 龙岩市| 吉木萨尔县| 永新县|