摘要:設(shè)定的值的時候,即已自動暗示類型。第五章循環(huán)自我重復(fù)的風(fēng)險數(shù)組用于在單一場所存儲多段數(shù)據(jù)數(shù)組的頁碼稱為鍵,索引只是一種形式特殊的鍵,它是數(shù)值鍵存儲在數(shù)組里的數(shù)據(jù)不一定為相同類型并不要求二維數(shù)組具有相同的行數(shù),但是最好保持一致。
**
簡介**
書名:《Head First JavaScript》
中文譯名:《深入淺出JavaScript》
著:Michael Morrison
編譯:O’Reilly Taiwan公司
出版發(fā)行:東南大學(xué)出版社
申明:
本文所做的筆記并非本書最精華的部分,筆記大多是第一次閱讀本書時候所記錄下來的本人比較有感觸的部分(茅塞頓開?),雖然再次看這些知識點的時候自己也找不到當(dāng)時初看時候的感覺,但是分享給大家,希望對大家的前端學(xué)習(xí)有所幫助。
本章首先講述了JavaScript對于網(wǎng)頁的重要性,即為網(wǎng)頁帶來了生命;然后以一個iRock的例子說明了JavaScript是如何為網(wǎng)頁帶來了生命,使網(wǎng)絡(luò)呈現(xiàn)出交互性,總得來說屬于吸引人繼續(xù)往下讀的章節(jié),本章,我沒有做太多有用的筆記。
第二章 存儲數(shù)據(jù) 每項事物都有自己的位置1、本章主要講述的是如何呈現(xiàn)數(shù)據(jù)、存儲數(shù)據(jù)以及找出數(shù)據(jù):
2、JavaScript使用三種基本數(shù)據(jù)類型text、number以及boolean。設(shè)定JavaScript的值的時候,即已自動暗示類型。具有極大的靈活性;
3、alert框里列出的數(shù)字,其必定為文本類型;
4、設(shè)定常量使用const NAME=Value;
5、重新載入網(wǎng)頁,腳本回來尚未執(zhí)行前的狀態(tài);
6、標(biāo)識符:變量,常量及其它JavsScript語法元素在腳本里用作分辨的獨一無二的名稱,標(biāo)識符應(yīng)該具有描述性;
7、創(chuàng)建常量時務(wù)必初始化,否則容易引起誤解(未初始化undefined表示沒有數(shù)據(jù));
8、NaN:not a number;非數(shù)字,用于表達(dá)變量的特殊狀況,某個表示應(yīng)該是數(shù)字的值不見了的時候就會出現(xiàn)NaN;
9、常用命名規(guī)則:主要采用駝峰型(CamelCase)(首字母也大寫)只會用于對象,小寫駝峰型則用于變量和函數(shù),常量全部大寫;
10、parseInt()與parseFloat():將文本轉(zhuǎn)換為數(shù)字(傳入的必須為數(shù)值,否則NaN);
11、toFixed()函數(shù)可以把Number四舍五入為指定小數(shù)位數(shù)的數(shù)字;
12、isNaN()函數(shù),返回兩個值,不是數(shù)字(true);是數(shù)字(false)
13、對象的定義:其是一種先進的JavaScript數(shù)據(jù)類型,它能結(jié)合函數(shù),常量和變量為一個邏輯實體(logical entity),方法(method)其實是屬于某對象的函數(shù),特性(property)則是對象里的常量和變量,JavaScript幾乎使用對象表達(dá)一切;----------
1、瀏覽器里面允許JavaScript代碼的部分叫做JavaScript解釋器;
2、JavaScript被稱作客戶端語言的原因在于,網(wǎng)頁不用等待服務(wù)器處理和返回數(shù)據(jù);
3、關(guān)于cookie:
cookie就像變量,瀏覽器把它存放在用戶的硬盤中;
cookie的作用在于延長腳本的生命周期;cookie具有自己的有效日期,甚至都算不上中期的保存方案;
服務(wù)器也可以用來永久存儲數(shù)據(jù),不過小數(shù)據(jù)的時候不需要小題大做;
readCookie();writeCookie();
cookie影響瀏覽器的安全性,其本身非安全的存儲場所,最好別把敏感數(shù)據(jù)存儲在cookie里;
cookie不能訪問用戶的硬盤或散步病毒,但是可以存儲輸入網(wǎng)頁的個人數(shù)據(jù)。
只有在指定的網(wǎng)頁里,cookie名稱才需要獨特,因為cookie存儲時會依據(jù)創(chuàng)建它們的網(wǎng)頁加上區(qū)隔,確認(rèn)cookie在單一網(wǎng)站或網(wǎng)頁里面具體獨特性;
不同瀏覽器不能共享cookie的數(shù)據(jù)的;
cookie只適合存儲相對較少的文本數(shù)據(jù)(小于4kb)cookie效率比較低;
navigator.cookieEnabled用于檢查瀏覽器是否支持cookie;
4、Ajax:編寫的向網(wǎng)站請求信息的腳本,然后于網(wǎng)頁上呈現(xiàn)信息;
5、單次定時器——setTimeout(Timer code,Timer delay);
6、不管數(shù)字多大,都別在JavaScript的數(shù)值中加逗號;
7、清除定時器clearInterval(timerID);
8、document.body.clientWidth和document.body.clientHeigth特性里面存儲了客戶端窗口的寬度和高度;
9、document對象代表網(wǎng)頁本身;
10、style.height和style.width,幾乎可以改變?nèi)魏卧氐某叽纾?
11、要取用網(wǎng)頁元素,需要在onload里運行;
12、onresize()事件,檢測并響應(yīng)瀏覽器窗口尺寸的調(diào)整;
1、分號保留給單一語句使用,復(fù)合語句不需要;復(fù)合語句里面出現(xiàn)的單一語句還是需要加上分號,但是復(fù)合語句本身則不需要;
2、運算符:operator;表達(dá)式:expression;
3、只要不是null、0、空字符串(“”),或“未定義”,任何值都會被解讀為true;
4、作用域代表數(shù)據(jù)的上下文;
5、腳本層次:腳本的最上層;
6、創(chuàng)建在函數(shù)內(nèi)的變量為局部變量,其它全部都是全局變量;
7、switch/case語句讓我們在許多事物之間有效率的選擇,switch后面的表達(dá)式,不可為運算式,只能是單純的數(shù)據(jù)。
1、數(shù)組用于在單一場所存儲多段數(shù)據(jù);
2、數(shù)組的頁碼稱為鍵(key),索引只是一種形式特殊的鍵,它是數(shù)值鍵;
3、存儲在數(shù)組里的數(shù)據(jù)不一定為相同類型;
4、并不要求二維數(shù)組具有相同的行數(shù),但是最好保持一致。
1、解決“大”問題的訣竅,就在于將其分解成較小,較易管理的問題,如果分解后問題還是太龐大,再進一步分解;
2、程序代碼分解為函數(shù)的原因,在于協(xié)助區(qū)分工作,并為每個函數(shù)賦予單一目的;
3、復(fù)制代碼是個做成函數(shù)的好征兆,另外一個征兆是某段代碼逐漸變得笨重龐大,且可以被分解為數(shù)個邏輯片段;
4、argument:函數(shù)自變量;
5、字面量(literal)是用于表達(dá)源代碼中一個固定值的表示法;
6、return語句亦可不與任何數(shù)據(jù)同用,單純用于提早結(jié)束函數(shù);
7、關(guān)于函數(shù)的進一步理解:
函數(shù)只不過是變量,函數(shù)不像一般變量,變量將其數(shù)據(jù)存儲成存儲器的某個區(qū)域里的值,函數(shù)則存儲對代碼的引用。所以函數(shù)變量的值不是代碼本身,而是指向存儲代碼的存儲器位置的引用;
當(dāng)函數(shù)主體多帶帶出現(xiàn)而沒有名稱時,又被稱為函數(shù)字面量(function literal) 函數(shù)名稱也被稱為函數(shù)引用(function reference)
引用函數(shù)和調(diào)用函數(shù)的區(qū)別在于函數(shù)名稱后面是否有(),函數(shù)引用只會多帶帶出現(xiàn),但是函數(shù)調(diào)用則必定后隨括號,很多時候還附有自變量;
函數(shù)引用讓我們聯(lián)接JavaScript代碼設(shè)計的事件處理函數(shù),而不需改動HTML代碼;
回調(diào)函數(shù):回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當(dāng)這個指針被用來調(diào)用其所指向的函數(shù)時,我們就說這是回調(diào)函數(shù),其重要性在于讓我們對代碼外發(fā)生的事情有所反應(yīng),回調(diào)函數(shù)就是一直在等待某事發(fā)生好準(zhǔn)備起身動作的函數(shù);
函數(shù)字面量有時候被稱為匿名函數(shù)(anonymous
function),只是沒有名稱的函數(shù)主體,有點像是實際的數(shù)據(jù),其重要性在于它們很適合需要快速偶發(fā)回調(diào)函數(shù)的情況,只被調(diào)用一次;
8、onload事件處理器是一個初始化所有事件的絕佳地方;
9、onload處理器保證網(wǎng)頁一定已經(jīng)載入,script標(biāo)簽中,網(wǎng)頁不一定加載;
1、id屬性可獨一無二地識別網(wǎng)頁元素,name屬性可獨一無二地識別表單中的域,以上2、兩個屬性均可當(dāng)成input域的識別符;
3、form對象厲害的地方,在于它也是一個數(shù)組,負(fù)責(zé)存儲表單中所有域。但是它的數(shù)組元素并非利用數(shù)值索引存儲,而是使用域獨有,于name屬性設(shè)定的標(biāo)識符;
4、oncharge事件和onblur類似,但它只在某個域不再被選擇而且輸入內(nèi)容被改變時觸發(fā);
5、有很多響應(yīng)鍵盤行為的事件。比如onkeypress,onkeyup,onkeydown;
6、使用來添加驗證,而不使用煩人的alert();
7、在html元素的上下文中,關(guān)鍵字this指向代表該元素的對象,form屬性可以把整份表單當(dāng)做對象訪問,this.form用于引用表單本身。this.form是對form對象的引用;
8、輔助信息的id,命名規(guī)則一般為輸入域的id后面加上_help;
9、isNaN()函數(shù)可檢查值是否“不為數(shù)字”;
10、數(shù)據(jù)全部都正確才執(zhí)行(&&);
11、問題很嚴(yán)重時,值得使用alert框;
12、關(guān)于正則表達(dá)式:
作用:正則表達(dá)式(regular expression)專門設(shè)計用于匹配文本模式;
正則表達(dá)式使用說明:出現(xiàn)在一對斜線里//;
元符號:用來連接字母和數(shù)字,創(chuàng)建高度描述性文本模式的特殊符號;
”.”(點):匹配任何字符,換行符除外(newline);
s:匹配空格,包括空白字符(space),tab,換行符,renturn/enter;
d:匹配任何數(shù)字字符;
^:字符串需以模式起始,前不能有其它字符;
w:匹配任何字母數(shù)字;
$:字符串需要以此模式結(jié)束;
正則表達(dá)式:不是元字符的任何文字將于正則表達(dá)式里“照樣匹配”;
正則表達(dá)式限定符(quantifier),限定符前為子模式,限定符即應(yīng)用在子模式,并且控制子模式出現(xiàn)在模式里地次數(shù):
*:子模式為可選的,可出現(xiàn)任意次數(shù);
{n}:限定符之前的子模式必須恰好出現(xiàn)n次;
+:子模式必須出現(xiàn),必須出現(xiàn)1次或多次;
?:子模式為可選的,若出現(xiàn)最多只能出現(xiàn)1次(0或1次);
():集合字符或/和元字符,成為子模式;
模式限定:比起只有元字符更加精確,不再直接重復(fù)子模式;
正則表達(dá)式本身不是字符串,但可以當(dāng)做是對外部字符串的描述;
正則表達(dá)式單純設(shè)計用于匹配文本字符串內(nèi)的字符模式,所以只能用在字符串上 具有特殊意義的字符,能以來進行轉(zhuǎn)義匹配。比如匹配$為$;
13、簡單字母串搜索indexOf()其實是極度簡化到最簡化的模式匹配,此時的模式只是一個靜態(tài)的詞匯或者詞語;
14、模式是一組對文本的敘述,但模式不見得必為文本本身;
15、JavaScript的RegExp對象的test()方法用于檢查字符串是否包含正則表達(dá)式模式;
16、正則表達(dá)式中的選替(alternation),類似于JavaScript的OR邏輯運算符,為|單豎線;
17、字符類:在模式里創(chuàng)建受到緊密控制的子模式[],在字符類內(nèi),每個列出的字符都是合格的字符匹配目標(biāo),能建立可替換的子模式列表;
18、郵件驗證的正則表達(dá)式:/^[w.-_+]+@[w-]+(.w{2,4})+$/;
1、關(guān)于innerHTML:
innerHTML特性對所有存儲在元素里的內(nèi)容提供了訪問管道;
innerHTML特性實際上用于設(shè)置內(nèi)容類元素,例如div、span、p以及其它裝載內(nèi)容的元素;
innerHTML特性一定完全改寫任何原有內(nèi)容,其沒有附加的概念;
2、nodeValue特性總是包含純文本,沒有額外格式:存儲于節(jié)點的值,只限文本和屬性節(jié)點使用;
3、利用nodeValue特性,可以輕易地指派新文本內(nèi)容給子節(jié)點,但是只在非元素只擁有一個節(jié)點,如果擁有多個,只改變第一個;
4、安全的修改內(nèi)容的方法:移除子節(jié)點;根據(jù)新內(nèi)容創(chuàng)建新的文本節(jié)點;把新創(chuàng)建的文本子節(jié)點附加在節(jié)點下:對應(yīng)removeChild();createTextNode();appendChild();
5、存儲在元素中的內(nèi)容,在DOM樹中一定是該元素的子節(jié)點;
6、nodeType特性返回的是每種節(jié)點類型的代號,TEXT是3,ELEMENT是1;
7、DOM是種符合萬維網(wǎng)標(biāo)準(zhǔn)的HTML操縱方式,它能比innerHTML(微軟退出,后被其它瀏覽器采用,但并不是標(biāo)準(zhǔn))特性達(dá)成更多操控功能;
8、createTextNode()創(chuàng)建的文本節(jié)點內(nèi)容只能是文本,不能有其它標(biāo)簽或者附加格式的文本;
9、通過改變樣式類的名稱可以更改樣式;
10、在HTML代碼中我們能透過關(guān)鍵字this訪問相對于某個元素的對象;
11、節(jié)點的style特性提供對單一樣式特性的訪問;
12、網(wǎng)頁元素可以利用元素對象的visibiliey樣式特征做動態(tài)的顯示或隱藏,也可以用display屬性。
1、對象=數(shù)據(jù)+行為;
2、對象是個容器,其中存儲數(shù)據(jù)并鏈接數(shù)據(jù)與依據(jù)數(shù)據(jù)行動的代碼;
3、當(dāng)變量與函數(shù)被放在對象里面時,它們被當(dāng)成對象成員(object member),變量稱為對象的特性(property),函數(shù)被稱為對象的方法(method);
4、通常運用點號運算符來訪問對象的方法和特性.;以點號引用對象成員;
5、對象是一組有名稱的特性和方法的集合。其包含多塊數(shù)據(jù),其可稱為complex數(shù)據(jù)類型;而number,text,boolean被稱為基本數(shù)據(jù)類型;
6、與對象緊密聯(lián)系的數(shù)據(jù),比起在腳本中飄零的一般數(shù)據(jù)(全局變量),具有更多背景和意義;
7、JavaScript本身就是一個大型的對象集合,比如alert()函數(shù)是window對象的方法;
標(biāo)準(zhǔn)JavaScript對象:日期,字符串,數(shù)組;
8、構(gòu)造函數(shù)負(fù)責(zé)創(chuàng)建對象,使用new運算符,它調(diào)用對象的構(gòu)造函數(shù),開啟對象創(chuàng)建和過程;
9、構(gòu)造函數(shù)的大部分工作,就是創(chuàng)建對象的特性,還有對象的初始值。在構(gòu)造函數(shù)里創(chuàng)建特性時,需要使用JavaScript的關(guān)鍵字this,其指派對象特性的所有權(quán),同時設(shè)置特性的初始值,創(chuàng)建屬于“這個”(this)對象的特性,而不是構(gòu)造函數(shù)里的局部變量。this.who=who;
10、構(gòu)造函數(shù)都采用首字母大寫,如同對象名稱
11、關(guān)鍵字this是于構(gòu)造函數(shù)里創(chuàng)建對象特征的重點;
12、new運算符和構(gòu)造函數(shù)共同創(chuàng)建了對象;
13、構(gòu)造函數(shù)負(fù)責(zé)創(chuàng)建對象的特性,所以沒有構(gòu)造函數(shù)就沒有任何特性,沒有任何特性就不是一個有意義的對象;
14、this是JavaScript的關(guān)鍵字,用于引用對象;
15、在Date對象里,時間以毫秒數(shù)表達(dá);
16、String對象看起來不太像對象,它們只是簡單地括起一段文本字符串,創(chuàng)建為對象字面量(object literal);
17、Date對象在于表達(dá)瞬間,以1970年1月1日為參考點,以毫秒為單位;
18、對象轉(zhuǎn)換為文本,每個JavaScript對象都具有toString()方法,它試圖為對象提供文本字符的表達(dá)方式,會主動冒出來工作;
19、getMonth()日期中的月份數(shù),以0到11表示;getDate():一個月中的天數(shù),1到31;getFullYear():完整地四位數(shù)年份;
20、Array對象的sort()方法,默認(rèn)采取由小到大的升冪順序;
21、字符串里面的字符串被稱為子字符串(substring);
22、indexOf()方法:返回子字符串位置的索引值,或者在找不到匹配字符串時返回-1;
字符串可以看成是字符組成的數(shù)組;
23、可以把字符串內(nèi)的字符類比如數(shù)組的元素,但是字符串一定不是數(shù)組;
24、chartAt()只能搜索單一字符;
25、Math對象是個收藏數(shù)學(xué)方法和常量的組織對象,其沒有變量,不能用于存儲任何事物;
26、Math對象并未實際包含可以使用的數(shù)據(jù)(instance data),所以不需要創(chuàng)建對象,其只是靜態(tài)的方法和常量的集合;
27、Math.round():四舍五入;Math.floor():直接舍去小數(shù)點后面的數(shù)字;
28、把一些常用函數(shù)加到對象里面去;
??
1、方法過載
2對象類:是對象的描述,一份描述對象構(gòu)成的模板;對象實例:則是實際對象,從類中創(chuàng)建;
3、類描述對象的特性和方法,實例則把真正的數(shù)據(jù)放入特性,并為數(shù)據(jù)注入生命,每個實體都有自己的特性副本,實例之間才彼此不同;
4、關(guān)鍵字this用于設(shè)置實例擁有的特性和方法,但是this同時表明它們被各個實例所擁有,這就解釋了方法會被復(fù)制到每個特例(方法過載)的原因;
5、類擁有的實例方法(class-owned instance method),比起每個實例各存儲一份方法,有效率多了;
6、方法存儲在類里,讓所有實例共享一份方法代碼;
7、prototype對象用于設(shè)定隸屬于類層(class level)的特性與方法,而非屬于實例的;
8、類是對象的描述,實例則是實際的對象,根據(jù)對象描述所創(chuàng)建的;
9、類勾畫了對象的特性和方法,實例則把真正的數(shù)據(jù)放在特性里以供方法利用;
10、關(guān)鍵字this用于從實例本身的程序代碼內(nèi)訪問實例;
11、prototype對象讓方法可存儲于類內(nèi),以免實例不必要地一直復(fù)制程序代碼;
12、類讓對象的創(chuàng)建和重復(fù)利用更為容易;
13、this從實例內(nèi)的方法訪問實例,而prototype,提供創(chuàng)建類的機制,不像C++或Java等其它程序語言,JavaScript并未真正支持類作為語言的具體構(gòu)成要素,它使用prototype模擬類;
14、構(gòu)造函數(shù)是創(chuàng)建JavaScript類時非常重要的一部分,它們負(fù)責(zé)構(gòu)造對象實例,構(gòu)造函數(shù)負(fù)責(zé)設(shè)定實例的一切事項,原型負(fù)責(zé)處理類層的一切事項;
15、Blog.prototype.toHTML=function(){…};
16、對象命名的唯一規(guī)則,只有首字母大寫,但是實例的命名規(guī)則采用小寫駝峰式。實例其實是一個變量;
17、面向?qū)ο缶幊蹋∣OP):在程序中廣泛使用對象,程序可分解成很多組彼此交互的對象集合;
18、類特性(class property)也能共享,使用prototye創(chuàng)建Blog.prototype.signature=“";
調(diào)用類特性只需要this.signature;
19、類特性的訪問一定與實例有關(guān);
20、利用prototype可以擴展內(nèi)置的JavaScript類,是類擁有的實例方法,屬于類,但能訪問實例數(shù)據(jù);
21、類方法:為類所有,但是無法訪問實例特性的方法,不使用prototype對象,僅使用22、類名和點號把方法指派給類;類名是調(diào)用類對象的關(guān)鍵;
23、把對象的功能封裝(encapsulate)至對象里,是OPP的基本概念之一,表明外部代碼不應(yīng)該負(fù)責(zé)對象本身可負(fù)責(zé)的工作;
24、當(dāng)某個自變量未被傳給函數(shù),方法或構(gòu)造函數(shù)時,在任何試圖使用自變量的代碼里,它的值都是null,這并不一定是壞事?;
1、不同瀏覽器對腳本的報錯不一樣,可通過多個瀏覽器找出錯誤出現(xiàn)的地方,總的來說Firefox非常適合去除網(wǎng)頁腳本里所包含的缺陷;
2、凡是未被指派值的變量,會自動假設(shè)為undefined類型,變量從來不會自動設(shè)為null,其在boolean上下文中都被轉(zhuǎn)換為false;
3、雖然大多數(shù)瀏覽器都提供了錯誤控制臺,但并非完全準(zhǔn)確,不能全盤相信;
4、瀏覽器通常產(chǎn)生不完全的錯誤信息,其都是尋找問題的線索;
5、缺少括號,打錯字是常見的錯誤來源;
6、JavaScript代碼中,引號應(yīng)該成對出現(xiàn);
7、當(dāng)引號不是引號,使用轉(zhuǎn)義符:alert(‘It"s so exciting!"),不需要運用alert(“It"s so exciting!”);
8、alert可以作為觀察變量數(shù)值的窗口以及驗證代碼是否被運行;
9、=不等于==;
10、邏輯錯誤較語法錯誤更難處理,瀏覽器不提示:意圖做某事,卻意外地寫成了另一件事情的代碼;
11、凡是企圖讀取未定義的變量行使有意義的行為都變得完全沒有意義,因而會報錯;
12、注意網(wǎng)頁里面的JavaScript代碼的運行時間;
13、運行時錯誤(Runtime error):不會載入文檔主體的問題:用戶在表單里輸入了腳本無法處理的數(shù)據(jù),試圖在對象創(chuàng)建或初始化前訪問對象;
14、JavaScript三蟲客:語法錯誤,邏輯錯誤,運行時錯誤;
15、語法錯誤(Syntax):由于違反JavaScript語言規(guī)則而造成的錯誤,表示代碼不適合在JavaScript解釋器中運行;
16、移除程序代碼是一個絕佳的腳本顯示方式:利用注釋暫時禁用代碼;
17、同名局部變量會掩蔽全局變量(陰影變量);局部變量在局部范圍內(nèi)具有優(yōu)先權(quán),陰影變量在任何情況下都應(yīng)該被靜止;
1、Ajax:使得網(wǎng)頁的行為比較像完全成熟的應(yīng)用程序,因為它們能夠動態(tài)地快速下載并存儲數(shù)據(jù)以及實時響應(yīng)用戶,卻不用重新載入網(wǎng)頁或利用瀏覽器的某些小手段;
2、以動態(tài)數(shù)據(jù)建造的網(wǎng)頁稱為數(shù)據(jù)驅(qū)動網(wǎng)頁(data-driven page),這類網(wǎng)頁只定義了等著數(shù)據(jù)填入的頁面構(gòu)架;
3、動態(tài)數(shù)據(jù)需要一點事前編輯工作,但是日后帶來龐大的回報;
4、XML是種為任何類型的數(shù)據(jù)設(shè)計格式的標(biāo)記語言;
5、XML沒有定義任何標(biāo)簽和屬性,它是一組標(biāo)簽與屬性該如何創(chuàng)建和使用的規(guī)則。一切6、說明特定數(shù)據(jù)表現(xiàn)方式的標(biāo)簽與屬性規(guī)范都交給各個XML應(yīng)用程序;
7、現(xiàn)在已經(jīng)有很多創(chuàng)建完畢的XML語言,用于解決各式各樣的問題,借用這些XML語言或者創(chuàng)建自己專屬的標(biāo)記語言都非常好;
8、XHTML是遵守XML的較嚴(yán)格語法規(guī)則的新版HTML;
必須有結(jié)束標(biāo)簽;
結(jié)束標(biāo)簽必須有/如
;
所有的屬性值均以引號圍起來;
9、XML對數(shù)據(jù)的外觀沒有概念,其專心于數(shù)據(jù)的意義;
10、XML曾經(jīng)是Ajax的一部分,現(xiàn)在仍然是大多數(shù)Ajax應(yīng)用程序的基礎(chǔ),其提供了數(shù)據(jù)建模的絕佳機制;
11、XML和HTML相似,遂可以透過DOM,把XML視為節(jié)點數(shù)而訪問數(shù)據(jù)。小心的分離出想要的數(shù)據(jù),然后動態(tài)的融合數(shù)據(jù)與網(wǎng)頁;
12、在實行客戶端與服務(wù)端的數(shù)據(jù)通信時,Ajax以請求(request)和響應(yīng)(response)為中心概念;
13、JavaScript內(nèi)置一個稱為XMLHttpRequest的對象,用于發(fā)起Ajax請求并處理Ajax響應(yīng);
14、readyState:請求的代碼狀態(tài)0(未初始)、1(開啟)、2(已傳送)、3(接收中)、4(已載入);
15、status:HTTP的請求狀態(tài)代碼,例如404(找不到文件)或者200(OK);
16、onreadystatechange:請求狀態(tài)改變時會被調(diào)用的函數(shù)引用,存儲一個引用,引用于Ajax請求的狀態(tài)改變時調(diào)用的自定義事件處理器——這是事件處理器就是處理響應(yīng)的地方(判斷Ajax是否以合格的響應(yīng)結(jié)束);
17、responseText:由服務(wù)器返回的響應(yīng)數(shù)據(jù),格式為純文本字符串;
18、responseXML:由服務(wù)器返回的響應(yīng)數(shù)據(jù),格式為XML節(jié)點樹構(gòu)成的對象(這兩個存儲服務(wù)器返回的Ajax響應(yīng)數(shù)據(jù));
19、abort()取消請求,只用在需要取消Ajax請求的時候;
20、open():準(zhǔn)備請求,指定請求的類型,URL及其他細(xì)節(jié);
21、send():傳送請求,交給服務(wù)器處理:這兩個方法合作準(zhǔn)備Ajax請求,而后送給服務(wù)器;
22、即使是最基礎(chǔ)的Ajax請求,也需要相當(dāng)數(shù)量的JavaScript代碼;
23、創(chuàng)建XMLHttpRequest對象的問題,在于瀏覽器必須提供自己的對象實現(xiàn),好消息是所有瀏覽器使用的方法和特性都是一致的,對象的創(chuàng)建方式才是瀏覽器需要考量的差異;
24、非同步請求(asynchronous request)在后臺運作,不用讓腳本等待,所以幾乎所有的Ajax請求都是異步的;
25、Ajax請求的類型(type)非常重要,不只反映傳送到服務(wù)器的事物,也反映請求的意圖;
26、GET:主要用于從服務(wù)器取得數(shù)據(jù),而不影響服務(wù)器上的其它東西,如果需要也能透過URL傳入小量數(shù)據(jù)給服務(wù)器;
27、POST:通常與傳送數(shù)據(jù)到服務(wù)器有關(guān),傳送后的服務(wù)器狀態(tài)通常有所改變,以響應(yīng)傳入的數(shù)據(jù),例如存儲數(shù)據(jù)到數(shù)據(jù)庫中;
28、自定義的AjaxRequest對象減輕了制作Ajax請求的痛苦過程;
29、send(type,url,handler,postDataType,postData);
30、type 請求的類型GET或POST,url:服務(wù)器的url,數(shù)據(jù)也可以包裝在url里面;
31、postDataType:被傳送的數(shù)據(jù)類型;handle:用于處理響應(yīng)的回調(diào)函數(shù);
32、postData:被傳送的數(shù)據(jù);
33、自定義的請求處理函數(shù)必須為請求而設(shè)置,用于請求完畢時被調(diào)用;
34、調(diào)用AjaxRequest對象的send()方法后,有個Ajax請求被傳送到服務(wù)器,網(wǎng)頁則先行35、處理網(wǎng)頁事物,同時服務(wù)器也在處理請求,這就是Ajax的異步,因為異步處理,網(wǎng)頁無需暫停,用戶體驗不會為此停歇;
36、HTTP的請求和響應(yīng)為網(wǎng)絡(luò)瀏覽器所用,從網(wǎng)絡(luò)服務(wù)器上獲取HTML網(wǎng)頁。Ajax的請求與響應(yīng)與HTTP的非常相似,但有幾項關(guān)鍵差異;Ajax版隨時可能發(fā)生,不見得牽涉到HTML數(shù)據(jù)的遞送,Ajax最大的好處之一,就是它能請求任何類型的數(shù)據(jù);
37、Ajax的請求和響應(yīng)為實時發(fā)生,通常不會干涉網(wǎng)頁的使用性,當(dāng)網(wǎng)頁上的一小塊需要更新時,用戶不用停下來等著整個網(wǎng)頁重新載入,那塊區(qū)域可于“背景”載入,用戶可以繼續(xù)瀏覽網(wǎng)頁其它部分并與之交互;
38、GET和POST的主要區(qū)別在于服務(wù)器是否經(jīng)歷狀態(tài)改變,例如存儲數(shù)據(jù)到數(shù)據(jù)庫;
自定義的AjaxRequest的角色是標(biāo)準(zhǔn)對象XMLHttpRequest的“外包裝”,用于簡化Ajax的使用;
39、交互式網(wǎng)頁就從請求對象開始;
40、客戶端腳本使用自定義的回調(diào)函數(shù)處理Ajax請求的響應(yīng);
41、AjaxRequest對象的方法具有對Ajax響應(yīng)數(shù)據(jù)的訪問權(quán)。getResponseText():以純文本的格式取得Ajax響應(yīng)里地訪問與getResponseXML():以結(jié)構(gòu)XML代碼的格式取得Ajax響應(yīng)里的數(shù)據(jù);
42、Ajax請求在state市4(loaded)且status是200(OK)時,表示完全成功;
43、handleRequest()函數(shù)只有在同時達(dá)成這兩個狀態(tài)時起身工作;
44、暫時禁用按鈕是一個絕佳的方案,而后于handleRequest()函數(shù)中啟用;
45、PHP是種可在服務(wù)器上執(zhí)行任務(wù)的腳本語言;
46、大多數(shù)時候,除了最簡單的請求,所有Ajax請求都牽涉到服務(wù)器端接受來自客服端的數(shù)據(jù),然后根據(jù)數(shù)據(jù)而行動;
47、運行PHP需要調(diào)校一下你的網(wǎng)絡(luò)服務(wù)器;
48、URL-encoded格式:每段數(shù)據(jù)需要有自己的名稱和值,中間插入(=),每對名稱/值之間則用&區(qū)隔;
49、代碼之間的共享使得網(wǎng)頁更加精簡。?
?????
**
小結(jié):**
《Head First JavaScript》是一本入門書,語言通俗易懂,幽默風(fēng)趣,很多部分比較偏基礎(chǔ),但是又不失細(xì)節(jié),本書以實例為指導(dǎo)來說明JavaScript的一個個部分,確實能增強初學(xué)者對JavaScript的作用的理解,總的來說看完本書,我感覺收獲還是很大的,筆記只是本書的很少的一部分,如果對JavaScript有一定了解,但是感覺又不是很清楚的同學(xué),推薦大家閱讀一下,一定會很有收獲的。
本人也是前端的初學(xué)者,之后會慢慢再跟大家分享自己學(xué)習(xí)過程中看的書,做的筆記,期待跟大家一起進步,本文只是個人筆記,如果有錯誤的地方,希望大家能夠指出,希望跟大家一起探討交流。
?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/78304.html
摘要:一讓廣播明星黯然失色要建立頁面,需要創(chuàng)建用超文本標(biāo)記語言,編寫的文件,把它們放在一個服務(wù)器上二服務(wù)器能做什么服務(wù)器在互聯(lián)網(wǎng)上有一份全天候的工作。一、Web讓廣播明星黯然失色 要建立Web頁面,需要創(chuàng)建用超文本標(biāo)記語言(HyperText Markup Language,HTML)編寫的文件,把它們放在一個Web服務(wù)器上二、Web服務(wù)器能做什么? Web服務(wù)器在互聯(lián)網(wǎng)上有一份全天候的工...
摘要:下面這條語句將導(dǎo)致語法錯誤變量名允許包含字母數(shù)字美元符號和下劃線但第一個字符不允許是數(shù)字。可以把一些布爾值存入一個數(shù)組,還可以把一組數(shù)值存入一個數(shù)組甚至可以把這種數(shù)據(jù)類型混在一起存入一個數(shù)組數(shù)組元素還可以是變量這將把數(shù)組的第一個元素賦值為。 執(zhí)行Javascript的方式 第一種方式是將JS代碼放到 < head > 標(biāo)簽中的 < script > 標(biāo)簽之間: ...
摘要:下面這條語句將導(dǎo)致語法錯誤變量名允許包含字母數(shù)字美元符號和下劃線但第一個字符不允許是數(shù)字。可以把一些布爾值存入一個數(shù)組,還可以把一組數(shù)值存入一個數(shù)組甚至可以把這種數(shù)據(jù)類型混在一起存入一個數(shù)組數(shù)組元素還可以是變量這將把數(shù)組的第一個元素賦值為。 執(zhí)行Javascript的方式 第一種方式是將JS代碼放到 < head > 標(biāo)簽中的 < script > 標(biāo)簽之間: ...
摘要:下面這條語句將導(dǎo)致語法錯誤變量名允許包含字母數(shù)字美元符號和下劃線但第一個字符不允許是數(shù)字。可以把一些布爾值存入一個數(shù)組,還可以把一組數(shù)值存入一個數(shù)組甚至可以把這種數(shù)據(jù)類型混在一起存入一個數(shù)組數(shù)組元素還可以是變量這將把數(shù)組的第一個元素賦值為。 執(zhí)行Javascript的方式 第一種方式是將JS代碼放到 < head > 標(biāo)簽中的 < script > 標(biāo)簽之間: ...
閱讀 2151·2021-10-14 09:43
閱讀 2207·2019-08-30 15:55
閱讀 739·2019-08-30 14:23
閱讀 2031·2019-08-30 13:21
閱讀 1247·2019-08-30 12:50
閱讀 2210·2019-08-29 18:46
閱讀 2292·2019-08-29 17:28
閱讀 2378·2019-08-29 17:21