一、JavaScript概述
<p><b>起源:</b>
Nombas的Cmm(后改名ScriptEasy);
<p><b>發(fā)展:</b>
Nombas的Cmm(ScriptEasy)→ NetScape的LiveScript(JavaScript)→windows的JScript→符合ECMA標準的JavaScript;
<p><b>構(gòu)成:</b>
ECMAScript(JavaScript標準)、DOM(Document Object Model 文檔對象模型) 、BOM(Browser Object Model 瀏覽器對象模型);
ECMAScript:
- 作用:
定義腳本語言的所有屬性、對象和方法; - 描述的內(nèi)容:*
1.語法;
2.類型;
3.語句;
4.關(guān)鍵字;
5.保留字;
6.運算符;
7.對象;* - 瀏覽器支持:如今所有的主流瀏覽器都遵守ECMA-262第三版;
DOM
- 是什么:HTML和XML的應用程序接口(API)。
- 實現(xiàn):通過創(chuàng)建樹來表示文檔(文檔由不同的節(jié)點構(gòu)成);
- 必要性:* 跨平臺(兼容)*;
- DOM Level:*
Level 0 : 歷史參考點,不存在標準;
Level 1:目標是規(guī)劃文檔結(jié)構(gòu),包括 DOM Core 和 DOM HTML 兩個模塊;
Level 2:對原始擴展添加了對鼠標和用戶界面事件、范圍、遍歷的支持,通過對象接口添加了對 CSS 的支持,對原始DOM core添加XML支持,引入幾種DOM新模塊(DOM視圖、DOM事件、DOM樣式、DOM遍歷和范圍),用于處理新的接口類型;
Level 3:引入了以統(tǒng)一方式載入和保存文檔的方法(包含在新模塊DOM Load和DOM Save中)以及驗證文檔(DOM Validation)的方法,擴展了DOM,DOM Core支持所有的XML1.0特性;
- 瀏覽器支持:并非所有的瀏覽器都支持DOM;
ps:DOM不是JavaScript專有的
BOM:
- 作用:處理瀏覽器窗口和框架;
- 包含內(nèi)容:* 彈出新的瀏覽器 礦口; 移動、關(guān)閉瀏覽器窗口及調(diào)整窗口大??;提供Web瀏覽器詳細信息的導航對象;提供裝載到瀏覽器中頁面的詳細信息的定位對象;提供用戶屏幕分辨率詳細信息的屏幕對象;對cookie的支持等;*
ps:BOM沒有特定的標準,每種瀏覽器都有自己的 BOM 實現(xiàn);
二、ECMAScript概述
語法:
- 區(qū)分大小寫;
- 變量是弱類型;
- 每行結(jié)尾的分號可有可無;
- 注釋 與JAVA、C和PHP語言的注釋相同;
- 括號表明代碼塊;
變量
- var + 變量名可以定義一個或多個變量;
- 變量不一定要 初始化;
- 變量可以存放不同類型的值;
- 變量名第一個字符必須是字母、下劃線或美元符號;
- 使用變量之前不用聲明(會被自動聲明為全局變量并初始化為指定的值);
ps:變量名命名規(guī)則(Camel標記法:首字母是小寫的,接下來的單詞都以大寫字母開頭; Pascal標記法:首字母是大寫的,接下來的單詞都以大寫字母開頭; 匈牙利類型標記法:在以Pascal標記法命名的變量前附加一個小寫字母<或小寫字母序列>,說明該變量的類型;)
關(guān)鍵字
- 關(guān)鍵字列表
break、else、new、var、case、finally、return、void、catch、for、switch、while、continue、function、this、with、default、if、throw、delete、in、try、do、instanceof、typeof - 誤用關(guān)鍵字錯誤提示:“Identifier expected”(應該有標識符)
保留字(為將來的關(guān)鍵字而保留的單詞)
- 保留字列表
abstract、enum、int、short、boolean、export、interface、static、byte、extends、long、super、char、final、native、synchronized、class、float、package、throws、const、goto、private、transient、debugger、implement、protected、volatile、double、import、public - 誤用保留字沒有錯誤提示,除非它們轉(zhuǎn)化為關(guān)鍵字;
原始值和引用值
- 原始值:存儲在棧中的簡單數(shù)據(jù)段,它們的值直接存儲在變量訪問的位置(存儲空間大小固定);
- 引用值:存儲在堆中的對象,存儲在變量處的值是一個指針,指向存儲對象的內(nèi)存處;
ps:引用值的地址存儲在棧中;
原始類型
- 五種原始類型:Undefined、Null、Boolean、Number和String;
- 依據(jù)每種原始類型值的范圍不同,可以用typeof判斷原始類型;
typeof 運算符
- typeof運算符有一個參數(shù),即要檢查的變量或值;
- null被認為是對象的占位符,調(diào)用typeof運算符時,會返回object;
Undefined類型
- Undefined類型只有一個值,即undefined;
- 當聲明未初始化時,該變量的默認值是undefined;
- 當函數(shù)無明確返回值時,返回的值是undefined;
- 未聲明的變量返回值也是undefined,但是運算時會出錯(運算符只能用于已經(jīng)聲明的變量);
Null類型
- Null只有一個值null;
- null的值與undefined的值相等;
- 當函數(shù)或方法返回不存在的對象時返回null(null表示不存在的對象);
Boolean類型
- Boolean有兩個值,true和false;
- 0可以在必要時轉(zhuǎn)化為false;
Number類型
- 直接輸入的任何數(shù)字都被看做是Number類型的字面量;
- 輸入八進制或六進制類型時,首位數(shù)字必須是0,后跟八或十六進制數(shù);
- 盡管所有整數(shù)都可表示為八進制或十六進制的字面量,但所有數(shù)學運算返回的都是十進制結(jié)果;
- 定義浮點值,必須包括小數(shù)點和小數(shù)點后的一位數(shù)(浮點數(shù)在計算前存儲的是字符串);
- 可用科學計數(shù)法表示非常大或非常小的浮點值;
- Number類型還包括幾個特殊值:Number.MAX_VALUE和Number.MIN_VALUE,定義了Number值集合的外邊界(可以用isFinit()方法檢測數(shù)字是否無窮)、NaN(非數(shù)),NaN的值不等于它本身,可以用isNaN()函數(shù)檢測是否為非數(shù);
String類型
- String類型沒有固定大小,字符串中的每個字符都有特定的位置(0,string.length),字符串的最后一位為字符串長度減一;
- String類型可以用單引號或雙引號聲明;
- String類型還包括幾種字符字面量:\n、\t、\b、\r、\f、\、'、''、\0nnn、\xnnn、\unnnn;
轉(zhuǎn)換成字符串的方法
- Boolean、Number和String這三個原始值都是偽對象,都有方法和屬性,可以用toString()方法把他們的值轉(zhuǎn)換為字符串;
- Number類型調(diào)用toString方法會有兩種模式,默認模式:直接調(diào)用toString(),無論輸入值是任何類型的數(shù)字,都會返回十進制數(shù)的字符串形式;基模式:調(diào)用toString(),同時括號里填不同的基,會返回不同基數(shù)字符串的形式;
轉(zhuǎn)換成數(shù)字的方法
- 把非數(shù)字的原始值轉(zhuǎn)換為整數(shù)可以用parseInt()方法,parseInt()方法有基模式,基寫在第二個參數(shù);
- parseFloat()方法可以將非數(shù)字轉(zhuǎn)換為浮點數(shù),該方法沒有基模式;
以上兩種方法只轉(zhuǎn)換第一個無效字符之前的字符串(部分值);
強制類型轉(zhuǎn)換的方法
- Boolean(value)——把給定的值轉(zhuǎn)換成Boolean類型;
- Number(value)——把給定的值轉(zhuǎn)換成數(shù)字(全部值);
- String(value)——把給定的值轉(zhuǎn)換為字符串;
- 強制轉(zhuǎn)換將創(chuàng)建新值;
引用類型(類)
- 通過new運算符加上要實例化的類的名字創(chuàng)建對象;
- 若要實例化的類沒有參數(shù),則類的括號可以省略;
object類
- 所有的類都是由object類繼承而來,object類中的所有屬性和方法都會出現(xiàn)在其他類中;
- object類具備的屬性:Constructor(創(chuàng)建指針)、Prototype(對象原型的引用);