第一章、 面向?qū)ο蟮腏avaScript
面向?qū)ο蟪绦蛟O計(OOP,Object -Oriented Programming)中最常用到的概念:
對象:是指"事物"在程序設計語言中的表現(xiàn)形式。
這里的"事物"可以是任何東西。例如,對于貓這種常見對象來說,我們可以看到它們具有某些明確的特征(如顏色、名字、體型等),能執(zhí)行某些動作(如喵喵叫、睡覺等)。在OOP語義中,這些對象特征都叫做屬性,而那些動作則被稱為方法。
類:在面向?qū)ο缶幊讨校悾╟lass)是對象(object)的模板,定義了同一組對象(又稱 "實例")共有的屬性和方法
JavaScript與C++或Java這種傳統(tǒng)的面向?qū)ο笳Z言不同,他實際上壓根兒就沒有類。該語言的一切都是基于對象的,其依靠的是一套原型(prototype)系統(tǒng)。而原型本身實際上也是一種對象。 在傳統(tǒng)的面向?qū)ο笳Z言中,我們一般會這樣描述:"我基于Person類創(chuàng)建了一個叫做Bob的新對象"。而在這種基于原型的面向?qū)ο笳Z言中,我們則要這樣描述:“我將現(xiàn)有的Person對象擴展成了一個叫做Bob的新對象?!?br>
封裝:封裝主要用于闡述對象中所包含的內(nèi)容,通常由兩部分組成。
- 相關的數(shù)據(jù)(用于存儲屬性)。
- 基于這些數(shù)據(jù)所能做的事(所能調(diào)用的方法)。
聚合:將幾個現(xiàn)有對象合并成一個新對象的過程。
繼承:在傳統(tǒng)的OOP環(huán)境中,繼承通常指的是類與類之間的關系,但由于JavaScript中不存在類,因此它的繼承只能發(fā)生在對象之間。通過繼承這種方式,我們可以非常優(yōu)雅地實現(xiàn)對現(xiàn)有代碼的重用。
多態(tài):不同對象通過相同的方法調(diào)用來實現(xiàn)各自行為的能力,我們就稱之為多態(tài)。
第二章、基本數(shù)據(jù)類型、數(shù)組、循環(huán)及條件表達式
2.1 基本數(shù)據(jù)類型綜述
2.1.1JavaScript語言中有五大基本數(shù)據(jù)類型:
- 數(shù)字;
- 字符串;
- 布爾值;
- undefined;
- null。
任何不屬于基本類型的東西都屬于對象。
2.1.2 數(shù)字類型可以儲存的數(shù)據(jù)包括:正負整數(shù)、浮點數(shù)、十六進制與八進制數(shù)、指數(shù)以及特殊數(shù)值NaN、Infinity、
-Infinity。
2.1.3 字符串類型存儲的是一對引號之間的所有字符。
2.1.4 布爾類型的值只有兩個:true和false。
2.1.5 null類型的值只有一個:null。
2.1.6 undefined類型的值只有一個:undefined。
2.1.7 絕大部分值在轉(zhuǎn)換為布爾類型事都為true,但以下6種falsy值除外:
- ""(空字符串,若" "引號里面有空格結(jié)果就不一樣了,轉(zhuǎn)換為布爾類型為true);
- null;
- undefined;
- 0;
- NaN;
- false。
2.3.2 Infinity
Infinity表示的是最大的數(shù),-Infinity表示的是最小的數(shù),任何數(shù)除以0結(jié)果也為Infinity,不包括0,0除以0得到的是NaN。正負Infinity做算術(shù)運算得到的是NaN,Infinity與其他任何操作數(shù)(即數(shù)字類型里除了NaN和正負Infinity)執(zhí)行任何算數(shù)運算的結(jié)果也都等于Infinity。
2.3.4 惰性求值
a&&b:將a,b轉(zhuǎn)換為Boolean類型,在執(zhí)行邏輯與,true返回b,false返回a;
a||b:將a,b轉(zhuǎn)換為Boolean類型,在執(zhí)行邏輯或,true返回a,false返回b
2.9 練習題
編寫一個打印乘法口訣的腳本程序。提示使用嵌套語句來實現(xiàn)。
for(var i=1;i<10;i++){
for(var j=1;j<=i;j++){
document.write(j+"*"+i+"="+i*j+" ");
}
document.write("<br>");
}