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