JavaScript程序設(shè)計(jì)基礎(chǔ)與實(shí)戰(zhàn)- 課件 模塊5 JavaScript對(duì)象編程及應(yīng)用_第1頁(yè)
JavaScript程序設(shè)計(jì)基礎(chǔ)與實(shí)戰(zhàn)- 課件 模塊5 JavaScript對(duì)象編程及應(yīng)用_第2頁(yè)
JavaScript程序設(shè)計(jì)基礎(chǔ)與實(shí)戰(zhàn)- 課件 模塊5 JavaScript對(duì)象編程及應(yīng)用_第3頁(yè)
JavaScript程序設(shè)計(jì)基礎(chǔ)與實(shí)戰(zhàn)- 課件 模塊5 JavaScript對(duì)象編程及應(yīng)用_第4頁(yè)
JavaScript程序設(shè)計(jì)基礎(chǔ)與實(shí)戰(zhàn)- 課件 模塊5 JavaScript對(duì)象編程及應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩88頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

JavaScript對(duì)象編程及應(yīng)用JavaScript程序設(shè)計(jì)基礎(chǔ)與實(shí)戰(zhàn)Learning

andpractice時(shí)間:演講人:目錄/DIRECTORYJavaScript的哦富川對(duì)象及方法2.

JavaScript的數(shù)值對(duì)象及方法3

.JavaScript的日期對(duì)象及方法4.

JavaScript的數(shù)組對(duì)象及方法5.

JavaScript的自定義對(duì)象6.

ES6使用class構(gòu)造對(duì)象7.

JavaScript的this指針8.

JavaScript的正則表達(dá)式與應(yīng)用9.

JavaScript的RegExp對(duì)象及其方法10.支持正則表達(dá)式的String對(duì)象的方法實(shí)戰(zhàn)演練1.JavaScript的字符串對(duì)象及方法

JavaScript的字符串(String)對(duì)象是存儲(chǔ)0個(gè)、1個(gè)或多個(gè)字符的變量。JavaScript字符串用于存儲(chǔ)和操作文本,字符串是用引號(hào)括起來(lái)的0個(gè)、1個(gè)或多個(gè)字符。1.定義(創(chuàng)建)JavaScript字符串的語(yǔ)法格式JavaScript字符串可以使用單引號(hào)('')或雙引號(hào)("")包括起來(lái)。也可以在字符串中使用引號(hào),只要不同于包括起來(lái)字符串的引號(hào)即可。(1)通過(guò)字面方式定義字符串。例如:varanswer="Nicetomeetyou!";varanswer="Heiscalled'常勝'";varstuName1="安靜";typeofstuName1//將返回string(2)通過(guò)關(guān)鍵字new將字符串定義為對(duì)象。例如:varstuName2=newString("安靜")typeofstuName2//將返回object1.JavaScript的字符串對(duì)象及方法

建議不要把字符串定義為對(duì)象,因?yàn)閚ew關(guān)鍵字會(huì)使代碼復(fù)雜化,也會(huì)拖慢代碼的執(zhí)行速度,還可能會(huì)產(chǎn)生一些意想不到的結(jié)果。當(dāng)使用“==”運(yùn)算符時(shí),兩個(gè)相同的字符串的運(yùn)算結(jié)果為true。例如,在以上代碼中,(stuName1==stuName2)的運(yùn)算結(jié)果為true,因?yàn)樽址兞縮tuName1和stuName2的值相等。當(dāng)使用“===”運(yùn)算符時(shí),兩個(gè)相同的字符串的運(yùn)算結(jié)果不一定為true,因“===”運(yùn)算符需要同時(shí)滿足類型相同和值相等兩個(gè)條件。只有當(dāng)兩個(gè)字符串的類型相同和值相等時(shí),運(yùn)算結(jié)果才為true;如果僅有值相等,類型不同,則運(yùn)算結(jié)果為false。例如,在以上代碼中,(stuName1===stuName2)的運(yùn)算結(jié)果為false,因?yàn)樽址兞縮tuName1和stuName2的值相等,但類型不同,stuName1的類型為string,stuName2的類型為object。另外,JavaScript對(duì)象無(wú)法進(jìn)行比較,比較兩個(gè)JavaScript對(duì)象將始終返回false。1.JavaScript的字符串對(duì)象及方法

2.轉(zhuǎn)義字符及其應(yīng)用在字符串中如果需要使用單引號(hào)('')、雙引號(hào)("")或反斜杠(\),則可以使用以反斜杠開(kāi)頭的轉(zhuǎn)義字符。轉(zhuǎn)義字符可以把特殊字符轉(zhuǎn)換為字符串中的字符。JavaScript中的轉(zhuǎn)義字符如表5-1所示。1.JavaScript的字符串對(duì)象及方法

從表5-1可以看出,\"表示在字符串中插入雙引號(hào),\'表示在字符串中插入單引號(hào),\\表示在字符串中插入反斜杠。例如:varstr='It\'sgoodtoseeyouagain';varx="字符\\被稱為反斜杠。";3.String對(duì)象的屬性與方法String對(duì)象的屬性與方法如表5-2所示。1.JavaScript的字符串對(duì)象及方法

?內(nèi)容講解:?JavaScript由布蘭登·艾奇(BrendanEich)于1995年為Netscape瀏覽器開(kāi)發(fā)。?1997年ECMA標(biāo)準(zhǔn)化:ECMA采用JavaScript作為標(biāo)準(zhǔn),稱為ECMAScript,標(biāo)準(zhǔn)文件為ECMA-262。?AJAX技術(shù)興起:隨著異步JavaScript和XML(AJAX)技術(shù)的興起,JavaScript被廣泛應(yīng)用于現(xiàn)代網(wǎng)頁(yè)開(kāi)發(fā),不再局限于簡(jiǎn)單的腳本語(yǔ)言。?重點(diǎn)講解:?JavaScript是解釋型語(yǔ)言,代碼在運(yùn)行時(shí)逐行解釋執(zhí)行,無(wú)需編譯。?JavaScript具有跨平臺(tái)特性,能在不同瀏覽器和操作系統(tǒng)中執(zhí)行。?JavaScript是動(dòng)態(tài)類型、弱類型語(yǔ)言,基于事件驅(qū)動(dòng),適合網(wǎng)頁(yè)交互功能。1.JavaScript的字符串對(duì)象及方法

1.JavaScript的字符串對(duì)象及方法

1.JavaScript的字符串對(duì)象及方法

1.JavaScript的字符串對(duì)象及方法

String對(duì)象的substring()和substr()的區(qū)別如下。String對(duì)象的substring()方法的一般形式為substring(start,end),用于從字符串中截取子字符串,其兩個(gè)參數(shù)分別是截取子字符串的起始字符和終止字符的索引值,截取的子字符串不包含索引值較大的參數(shù)對(duì)應(yīng)的字符。若忽略end,則字符串的末尾字符是終止值。若start=end,則返回空字符串。String對(duì)象的substr()方法的一般形式為substr(start,length),用于從start索引開(kāi)始,向后截取length個(gè)字符。若省略length,則一直截取到字符串結(jié)尾;若length設(shè)定的值大于字符串的長(zhǎng)度,則返回到字符串結(jié)尾的子字符串。1.JavaScript的字符串對(duì)象及方法

4.JavaScript字符串模板字符串模板的字面量使用反引號(hào)(``)而不是引號(hào)("")來(lái)定義字符串,在英文字母輸入狀態(tài)下按【Esc】鍵下邊那個(gè)鍵即可輸入反引號(hào)。例如:letstr=`HelloWorld!`;(1)字符串內(nèi)的引號(hào)。通過(guò)使用字符串模板的字面量,可以在字符串中同時(shí)使用單引號(hào)和雙引號(hào)。例如:lettext=`He'softencalled"Ginny"`;(2)多行字符串。字符串模板的字面量允許輸入多行字符串。(3)插值。字符串模板的字面量提供了一種將變量和表達(dá)式插入字符串的簡(jiǎn)單方法,該方法稱為字符串插值(StringInterpolation),即用真實(shí)值自動(dòng)替換變量或表達(dá)式。其語(yǔ)法格式如下。${...}①變量替換。字符串模板的字面量允許字符串中出現(xiàn)變量。②表達(dá)式替換。字符串模板的字面量允許字符串中出現(xiàn)表達(dá)式。1.JavaScript的字符串對(duì)象及方法

【示例5-1】demo0501.html代碼如下:letuserName="向陽(yáng)";document.write(`歡迎${userName}登錄!`);document.write("<br>");letprice=9.5;letnum=20;document.write(`金額為${price*num}`);2.JavaScript的數(shù)值對(duì)象及方法

數(shù)值(Math)對(duì)象包含用于各種數(shù)學(xué)運(yùn)算的屬性和方法,Math對(duì)象的數(shù)學(xué)函數(shù)可以在不使用構(gòu)造方法創(chuàng)建對(duì)象時(shí)直接調(diào)用,調(diào)用形式為Math.數(shù)學(xué)函數(shù)(參數(shù))。例如,計(jì)算cos(π/6)的表達(dá)式可以寫為Math.cos(Math.PI/6)。1.Math屬性(常量)JavaScript提供了8種可由Math對(duì)象訪問(wèn)的屬性(常量)。(1)歐拉指數(shù):Math.E。(2)圓周率:Math.PI。(3)2的平方根:Math.SQRT2。(4)1/2的平方根:Math.SQRT1_2。(5)2的自然對(duì)數(shù):Math.LN2。(6)10的自然對(duì)數(shù):Math.LN10。(7)以2為底的e的對(duì)數(shù):Math.LOG2E。(8)以10為底的e的對(duì)數(shù):Math.LOG10E。2.JavaScript的數(shù)值對(duì)象及方法

2.Math對(duì)象通常JavaScript的數(shù)值是通過(guò)字面量創(chuàng)建的原始值,也可以通過(guò)關(guān)鍵字new定義為對(duì)象。例如:varx=123;//typeofx返回numbervary=newNumber(123);//typeofy返回object建議不要?jiǎng)?chuàng)建數(shù)值對(duì)象,否則會(huì)拖慢程序的執(zhí)行速度,new關(guān)鍵字也會(huì)使代碼復(fù)雜化,并產(chǎn)生某些無(wú)法預(yù)料的結(jié)果。當(dāng)使用“==”運(yùn)算符時(shí),只要值相等,數(shù)值的比較結(jié)果就為相等。當(dāng)使用“===”運(yùn)算符時(shí),相等的數(shù)值可能變得不相等,因?yàn)椤?==”運(yùn)算符需要滿足類型相同和值相等兩個(gè)條件。2.JavaScript的數(shù)值對(duì)象及方法

【示例5-2】demo0502.html代碼如下:varx=500;vary=newNumber(500);document.write(x==y);//(x==y)的運(yùn)算結(jié)果為true,因?yàn)閤和y有相等的值document.write("<br>");document.write(x===y);//(x===y)的運(yùn)算結(jié)果為false,因?yàn)閤和y的類型不同此外,JavaScript對(duì)象之間無(wú)法進(jìn)行比較。3.Math對(duì)象的函數(shù)除了可以被Math對(duì)象訪問(wèn)的屬性,Math對(duì)象還有多個(gè)函數(shù)可以使用,如表5-3所示。2.JavaScript的數(shù)值對(duì)象及方法

2.JavaScript的數(shù)值對(duì)象及方法

4.JavaScript的Math方法JavaScript所有的Math方法都可用于任意類型的數(shù)值,包括字面量、變量或表達(dá)式。(1)toString()方法。toString()方法以字符串方式返回?cái)?shù)值?!臼纠?-3】demo0503.html代碼如下:varx=123;x.toString();//根據(jù)變量x返回123(123).toString();//根據(jù)文本123返回123(100+23).toString();//根據(jù)表達(dá)式100+23返回123(2)toFixed()方法。toFixed()方法用于返回字符串值,返回值包含指定小數(shù)位數(shù)的數(shù)值?!臼纠?-4】demo0504.html代碼如下:varx=9.656;x.toFixed(0);//返回10x.toFixed(2);//返回9.66x.toFixed(4);//返回9.65602.JavaScript的數(shù)值對(duì)象及方法

(3)toPrecision()方法。toPrecision()方法用于返回字符串值,返回值包含指定長(zhǎng)度的數(shù)值?!臼纠?-5】demo0505.html代碼如下:varx=9.656;x.toPrecision();//返回9.656x.toPrecision(2);//返回9.7x.toPrecision(4);//返回9.656x.toPrecision(5);//返回9.6560(4)valueOf()方法。所有JavaScript數(shù)據(jù)類型都有valueOf()和toString()方法,其中valueOf()方法以數(shù)值方式返【示例5-6】demo0506.html代碼如下:varx=123;x.valueOf();//根據(jù)變量x返回123(123).valueOf();//根據(jù)文本123返回123(100+23).valueOf();//根據(jù)表達(dá)式100+23返回1232.JavaScript的數(shù)值對(duì)象及方法

5.JavaScript的全局方法JavaScript的全局方法可用于所有JavaScript數(shù)據(jù)類型。(1)Number()方法。Number()方法用于把JavaScript變量轉(zhuǎn)換為數(shù)值。如果無(wú)法轉(zhuǎn)換為數(shù)值,則返回NaN?!臼纠?-7】demo0507.html代碼如下:x=true;Number(x);//返回1x=false;Number(x);//返回0x="10"Number(x);//返回10x="1020"Number(x);//返回NaN2.JavaScript的數(shù)值對(duì)象及方法

Number()方法也可以把日期轉(zhuǎn)換為數(shù)值?!臼纠?-8】demo0508.html代碼如下:d1=newDate();Number(d1);//返回日期對(duì)應(yīng)的數(shù)值d2=newDate("2022-10-16")Number(d2);//1665878400000上述代碼中的Number()方法用于返回1970年1月1日至2022年10月16日的毫秒數(shù)。(2)parseInt()方法。parseInt()方法用于解析一段字符串并返回?cái)?shù)值。它允許字符串包含空格,并且只返回首個(gè)整數(shù)。如果無(wú)法返回?cái)?shù)值,則返回NaN?!臼纠?-9】demo0509.html代碼如下:parseInt("10");//返回10parseInt("10.33");//返回10parseInt("102030");//返回10parseInt("10years");//返回10parseInt("years10");//返回NaN2.JavaScript的數(shù)值對(duì)象及方法

(3)parseFloat()方法。parseFloat()方法用于解析一段字符串并返回?cái)?shù)值。它允許字符串包含空格,并且只返回首個(gè)數(shù)值。如果無(wú)法返回?cái)?shù)值,則返回NaN?!臼纠?-10】demo0510.html代碼如下:parseFloat("10");//返回10parseFloat("10.33");//返回10.33parseFloat("102030");//返回10parseFloat("10years");//返回10parseFloat("years10");//返回NaN3.JavaScript的日期對(duì)象及方法

日期(Date)對(duì)象主要用于從系統(tǒng)中獲得當(dāng)前的日期和時(shí)間,設(shè)置當(dāng)前日期和時(shí)間,將時(shí)間、日期同字符串進(jìn)行轉(zhuǎn)換等操作。1.JavaScript的日期格式JavaScript將日期存儲(chǔ)為自1970年1月1日00:00:00UTC以來(lái)的毫秒數(shù),零時(shí)間為1970年1月1日00:00:00UTC,當(dāng)前的時(shí)間則為1970年1月1日之后的毫秒數(shù)。UTC(UniversalTimeCoordinated,世界協(xié)調(diào)時(shí))又稱世界統(tǒng)一時(shí)間、世界標(biāo)準(zhǔn)時(shí)間、國(guó)際協(xié)調(diào)時(shí)間。UTC等同于GMT(GreenwichMeanTime,格林尼治標(biāo)準(zhǔn)時(shí))。默認(rèn)情況下,JavaScript將使用瀏覽器的時(shí)區(qū)信息并將日期顯示為文本字符串,例如:SatOct15202206:28:24GMT+0800(中國(guó)標(biāo)準(zhǔn)時(shí)間)在設(shè)置日期時(shí),如果不規(guī)定時(shí)區(qū),則JavaScript會(huì)使用瀏覽器的時(shí)區(qū)信息。當(dāng)獲取日期時(shí),如果不規(guī)定時(shí)區(qū),則結(jié)果會(huì)被轉(zhuǎn)換為瀏覽器的時(shí)區(qū)信息對(duì)應(yīng)的日期。(1)ISO日期格式。ISO8601是表示日期和時(shí)間的國(guó)際標(biāo)準(zhǔn),ISO8601的日期格式(YYYY-MM-DD)也是JavaScript首選的日期格式。3.JavaScript的日期對(duì)象及方法

①完整日期。例如,vard=newDate("2022-10-16");。②指定年和月。例如,vard=newDate("2022-10");。③只指定年。例如,vard=newDate("2022");。④使用完整日期加時(shí)、分和秒。例如,vard=newDate("2022-10-16T09:18:00");這里日期和時(shí)間使用大寫字母T來(lái)分隔,UTC使用大寫字母Z來(lái)定義。在日期-時(shí)間字符串中省略T或Z,在不同瀏覽器中會(huì)產(chǎn)生不同結(jié)果。(2)短日期格式。短日期通常使用“MM/DD/YYYY”這樣的語(yǔ)法格式,例如:vard=newDate("10/16/2022");(3)長(zhǎng)日期格式。長(zhǎng)日期通常使用“MMMDDYYYY”這樣的語(yǔ)法格式,例如:vard=newDate("Oct162022");長(zhǎng)日期格式有以下特點(diǎn)。①月和日能夠以任意順序出現(xiàn)。例如,vard=newDate("16Oct2022");。②月能夠以全稱或縮寫表示。例如,vard=newDate("16October2022");。③對(duì)字母大小寫不敏感。例如,vard=newDate("16OCT2022");。3.JavaScript的日期對(duì)象及方法

(4)接受完整日期格式。JavaScript接受“完整日期格式”的日期字符串,并且會(huì)忽略該字符串中輕微的格式錯(cuò)誤。例如:vard=newDate("SunOct16202209:18:00GMT+0800(中國(guó)標(biāo)準(zhǔn)時(shí)間)");2.定義日期Date對(duì)象用于處理日期和時(shí)間,可以通過(guò)new關(guān)鍵字來(lái)定義Date對(duì)象。(1)使用newDate()創(chuàng)建Date對(duì)象。newDate()使用當(dāng)前日期和時(shí)間創(chuàng)建新的Date對(duì)象。以下代碼定義了名稱為d的Date對(duì)象。vard=newDate();Date對(duì)象自動(dòng)使用當(dāng)前的日期和時(shí)間作為其初始值。(2)使用newDate(year,month,day,hours,minutes,seconds,milliseconds)創(chuàng)建Date對(duì)象。newDate(year,month,day,hours,minutes,seconds,milliseconds)用指定的日期和時(shí)間創(chuàng)建新的Date對(duì)象,7個(gè)參數(shù)按順序分別用于指定年、月、日、小時(shí)、分鐘、秒和毫秒。例如:vard=newDate(2022,10,16,09,18,30,0);3.JavaScript的日期對(duì)象及方法

使用newDate(year,month,day,hours,minutes,seconds,milliseconds)創(chuàng)建Date對(duì)象時(shí),毫秒、秒、分鐘、小時(shí)、日允許省略。如果指定6個(gè)參數(shù),則指定年、月、日、小時(shí)、分鐘、秒;如果指定5個(gè)參數(shù),則指定年、月、日、小時(shí)和分鐘;如果指定4個(gè)參數(shù),則指定年、月、日和小時(shí);如果指定3個(gè)參數(shù),則指定年、月和日;如果指定2個(gè)參數(shù),則指定年和月;如果只提供1個(gè)參數(shù),則將其視為毫秒數(shù)。(3)使用newDate(dateString)創(chuàng)建Date對(duì)象。newDate(dateString)使用日期字符串創(chuàng)建一個(gè)新的Date對(duì)象。例如:vard=newDate("October16,202209:18:00");(4)使用newDate(milliseconds)創(chuàng)建Date對(duì)象。newDate(milliseconds)用于基于毫秒數(shù)創(chuàng)建一個(gè)新的Date對(duì)象。以下代碼創(chuàng)建的日期為ThuJan01197008:00:00GMT+0800(中國(guó)標(biāo)準(zhǔn)時(shí)間)。vard=newDate(0);//創(chuàng)建一個(gè)零時(shí)間加0毫秒的Date對(duì)象以下代碼創(chuàng)建的日期為FriJan02197008:00:00GMT+0800(中國(guó)標(biāo)準(zhǔn)時(shí)間)。vard=newDate(86400000);//創(chuàng)建一個(gè)1970年1月1日加上1天的毫秒數(shù)的Date對(duì)象3.顯示日期默認(rèn)情況下,JavaScript將以全文本字符串格式輸出日期。89JavaScript程序設(shè)計(jì)基礎(chǔ)與實(shí)戰(zhàn)對(duì)于下面定義的Date對(duì)象,可以有多種輸出形式。3.JavaScript的日期對(duì)象及方法

vard=newDate("October16,202209:18:00");(1)使用toString()方法轉(zhuǎn)換為字符串。例如,d.toString(),其輸出形式為SunOct16202209:18:00GMT+0800(中國(guó)標(biāo)準(zhǔn)時(shí)間)。(2)使用toDateString()方法將日期轉(zhuǎn)換為更易讀的形式。例如,d.toDateString(),其輸出形式為SunOct162022。(3)使用toUTCString()方法將日期轉(zhuǎn)換為UTC字符串。UTC也是一種日期顯示標(biāo)準(zhǔn)。例如,d.toUTCString(),其輸出形式為Sun,16Oct202201:18:00GMT。4.操作日期使用針對(duì)Date對(duì)象的方法,可以很容易地對(duì)日期進(jìn)行操作。

【示例5-11】demo0511.html為Date對(duì)象設(shè)置一個(gè)特定的日期(2023年10月1日)的代碼如下。vard=newDate();d.setFullYear(2023,9,1);document.write(d);表示月的參數(shù)為0~11。也就是說(shuō),如果希望把月設(shè)置為10月,則參數(shù)應(yīng)該是9。3.JavaScript的日期對(duì)象及方法

以下代碼用于將Date對(duì)象設(shè)置為5天后的日期。vard=newDate();d.setDate(d.getDate()+5);document.write(d);如果增加天數(shù)會(huì)改變?cè)禄蛘吣?,那么Date對(duì)象會(huì)自動(dòng)完成轉(zhuǎn)換操作。5.比較日期Date對(duì)象也可用于比較兩個(gè)日期。

【示例5-12】demo0512.html將2022年10月16日與2022年10月1日進(jìn)行比較的代碼如下。vardate1,date2,info;date1=newDate();date1.setFullYear(2022,10,1);date2=newDate();date2.setFullYear(2022,10,16);if(date1<date2){info="日期date1在日期date2之前";3.JavaScript的日期對(duì)象及方法

}else{info="日期date1在日期date2之后";}document.write(info);6.Date對(duì)象的方法Date對(duì)象的方法主要用于獲取并設(shè)置日期值(年、月、日、時(shí)、分、秒、毫秒)。(1)JavaScript的日期獲取方法。JavaScript中獲取日期某個(gè)部分的方法如表5-4所示。(2)JavaScript的日期設(shè)置方法。使用設(shè)置日期的方法可以設(shè)置Date對(duì)象的日期值(年、月、日、小時(shí)、分鐘、秒、毫秒),如表5-5所示。3.JavaScript的日期對(duì)象及方法

3.JavaScript的日期對(duì)象及方法

4.JavaScript的數(shù)組對(duì)象及方法

數(shù)組(Array)是一種特殊的變量,它能夠一次存放一個(gè)及以上的值。與普通變量的不同之處在于,數(shù)組可以把多個(gè)值和表達(dá)式放在一起,也可以同時(shí)存放很多值,還可以通過(guò)引用索引號(hào)來(lái)訪問(wèn)這些值。存放在JavaScript數(shù)組中的數(shù)據(jù)的類型和數(shù)量都沒(méi)有限制,在腳本中聲明數(shù)組之后,就可以隨時(shí)訪問(wèn)數(shù)組中的任何數(shù)據(jù)。雖然數(shù)組可以保存JavaScript中的任何類型的數(shù)據(jù),包括其他數(shù)組,但常見(jiàn)的做法是把類似的數(shù)據(jù)存儲(chǔ)在同一個(gè)數(shù)組中,并給它指定一個(gè)與數(shù)組項(xiàng)有關(guān)聯(lián)的名稱。1.定義(創(chuàng)建)數(shù)組(1)使用方括號(hào)標(biāo)識(shí)多個(gè)值來(lái)定義數(shù)組。其語(yǔ)法格式如下。vararray-name=[item1,item2,…];JavaScript數(shù)組的元素使用半角逗號(hào)“,”予以分隔。例如:varcolor=["red","yellow","blue"];聲明可以橫跨多行,允許包括空格和折行,但是最后一個(gè)元素之后不要添加逗號(hào)。(2)使用關(guān)鍵字new來(lái)創(chuàng)建數(shù)組對(duì)象。方法1:創(chuàng)建數(shù)組對(duì)象的同時(shí)指定元素的值。varcolor=newArray("red","yellow","blue");4.JavaScript的數(shù)組對(duì)象及方法

如果需要在數(shù)組內(nèi)指定數(shù)值或者布爾值,那么元素類型應(yīng)該是數(shù)值型或者布爾型,而不是字符串型。方法2:先單獨(dú)創(chuàng)建數(shù)組對(duì)象,再為各數(shù)組元素賦值。下面的代碼用于單獨(dú)定義一個(gè)名為color的數(shù)組對(duì)象。varcolor=newArray();有多種方法可以為數(shù)組元素賦值,也可以添加任意多個(gè)值,就像可以定義任意多個(gè)變量一樣。例如:varcolor=newArray();color[0]="red";color[1]="yellow";color[2]="blue";也可以使用一個(gè)整數(shù)來(lái)控制數(shù)組的容量。例如:varcolor=newArray(3)由于new關(guān)鍵字會(huì)使代碼復(fù)雜化,還會(huì)產(chǎn)生某些不可預(yù)期的結(jié)果,因此盡量不要使用JavaScript的內(nèi)建數(shù)組構(gòu)造方法newArray()創(chuàng)建數(shù)組對(duì)象,而使用[]取而代之。4.JavaScript的數(shù)組對(duì)象及方法

2.使用關(guān)鍵字const聲明數(shù)組使用const聲明數(shù)組已成為一種常見(jiàn)做法。例如:constfruits=["Apple","Pear"];(1)無(wú)法重新賦值。使用const聲明的數(shù)組不能重新賦值。例如:constfruits=["Apple","Pear"];fruits=["Orange","Banana"];//出錯(cuò)不允許在同一作用域或同一塊中重新聲明const數(shù)組或?yàn)楝F(xiàn)有的const數(shù)組重新賦值。(2)數(shù)組不是常量。關(guān)鍵字const有一定誤導(dǎo)性,它定義的是對(duì)數(shù)組的常量引用。因此,用戶仍然可以通過(guò)更改常量引用對(duì)應(yīng)的數(shù)組的元素。(3)元素可以重新賦值。例如://可以更改常量數(shù)組的元素constfruits=["Apple","Pear","Orange"];//也可以更改元素fruits[0]="Mango";//還可以添加元素fruits.push("Lemon");4.JavaScript的數(shù)組對(duì)象及方法

(4)使用const聲明的數(shù)組在聲明時(shí)必須賦值。JavaScript中使用const聲明的數(shù)組必須在聲明時(shí)進(jìn)行初始化。如果使用const聲明數(shù)組但未初始化數(shù)組,則會(huì)產(chǎn)生一個(gè)語(yǔ)法錯(cuò)誤。例如,以下聲明數(shù)組的代碼執(zhí)行時(shí)會(huì)出現(xiàn)“UncaughtSyntaxError:Missinginitializerinconst

declaration”的錯(cuò)誤提示信息。constfruitsfruits=["Apple","Pear","Orange"];而使用var聲明的數(shù)組可以隨時(shí)初始化,以下代碼可以正常運(yùn)行。varfruitsfruits=["Apple","Pear","Orange"];(5)const塊作用域。使用const聲明的數(shù)組具有塊作用域,也就是說(shuō),在塊中聲明的數(shù)組與在塊外聲明的數(shù)組不同。例如:constfruits=["Apple","Pear","Orange"];//此處的fruits[0]為"Apple"{constfruits=["Pear","Apple","Orange"];//此處的fruits[0]為"Pear"}//此處的fruits[0]為"Apple"4.JavaScript的數(shù)組對(duì)象及方法

使用var聲明的數(shù)組沒(méi)有塊作用域。例如:varfruits=["Apple","Pear","Orange"];//此處的fruits[0]為"Apple"{varfruits=["Pear","Apple","Orange"];//此處的fruits[0]為"Pear"}//此處的fruits[0]為"Pear"3.重新聲明數(shù)組在程序中的任何位置都允許使用var重新聲明數(shù)組。varfruits=["Apple","Pear","Orange"];//允許varfruits=["Apple","Pear"];//允許fruits=["Orange","Banana"];//允許4.JavaScript的數(shù)組對(duì)象及方法

4.訪問(wèn)數(shù)組元素通過(guò)指定數(shù)組名及索引,就可以訪問(wèn)某個(gè)特定的元素。以下代碼聲明(創(chuàng)建)了名為students的數(shù)組,包含3個(gè)元素。students=["張山","李斯","王武"];數(shù)組索引的定義是基于0的,即數(shù)組索引從0開(kāi)始,這意味著第1個(gè)元素的索引為[0],第2個(gè)元素的索引為[1],以此類推。例如:varcolor=newArray("red","yellow","blue");document.write(color[0])//輸出的值是"red"5.修改數(shù)組元素的值如果需要修改已有數(shù)組中的元素值,則向指定索引的元素添加一個(gè)新值即可。例如:color[0]="green";students[0]="安靜";4.JavaScript的數(shù)組對(duì)象及方法

9.JavaScript中數(shù)組對(duì)象的主要屬性和方法JavaScript中數(shù)組對(duì)象的常用屬性是length,用于設(shè)置或返回?cái)?shù)組中元素的數(shù)目,即數(shù)組的長(zhǎng)度。

【示例5-13】demo0513.html代碼如下:varperson=["張山","李斯","王武"];person.length;//數(shù)組person的長(zhǎng)度為3person[person.length-1]//訪問(wèn)數(shù)組的最后一個(gè)元素"王武"person[person.length]="安靜";//使用length屬性向數(shù)組中添加新元素document.write(person);JavaScrip中數(shù)組對(duì)象的方法較多,如表5-6所示。聲明數(shù)組的代碼如下。varfruits=["Apple","Pear","Orange","Banana"];表5-6中的示例代碼中大部分是基于數(shù)組fruits初始狀態(tài)執(zhí)行的,元素個(gè)數(shù)為4,排序依次為"Apple""Pear""Orange""Banana"。4.JavaScript的數(shù)組對(duì)象及方法

4.JavaScript的數(shù)組對(duì)象及方法

4.JavaScript的數(shù)組對(duì)象及方法

5.JavaScript的自定義對(duì)象

JavaScript是一種基于對(duì)象的腳本語(yǔ)言,ES6引入了JavaScript類。JavaScript在ES6之前的版本中不使用類,并不完全支持面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,不具有繼承性、封裝性等面向?qū)ο蟮幕咎匦浴S6之前,借助JavaScript的動(dòng)態(tài)性,可以創(chuàng)建一個(gè)空的對(duì)象(而不是類),通過(guò)動(dòng)態(tài)添加屬性來(lái)完善對(duì)象的功能。1.JavaScript的對(duì)象JavaScript中“一切皆對(duì)象”,JavaScript中的字符串、數(shù)值、數(shù)組、日期、函數(shù)都是對(duì)象。對(duì)象是擁有屬性和方法的特殊數(shù)據(jù)。JavaScript可提供多個(gè)內(nèi)建對(duì)象,如String、Date、Array等。如果使用關(guān)鍵字new來(lái)聲明JavaScript變量,則該變量會(huì)被創(chuàng)建為對(duì)象。例如:varstr=newString();//把str聲明為String對(duì)象varnum=newNumber();//把num聲明為Number對(duì)象varbool=newBoolean();//把bool聲明為Boolean對(duì)象應(yīng)盡量避免使用String對(duì)象、Number對(duì)象或Boolean對(duì)象,因?yàn)檫@些對(duì)象會(huì)增加代碼的復(fù)雜性并降低代碼的執(zhí)行速度。JavaScript也允許用戶自定義對(duì)象。JavaScript對(duì)象其實(shí)就是屬性的集合,給定一個(gè)JavaScript對(duì)象,用戶可以明確地知道一個(gè)屬性是不是這個(gè)對(duì)象的屬性。對(duì)象中的屬性是無(wú)序的,并且其名稱各不相同,如果出現(xiàn)同名的屬性,則后聲明的屬性會(huì)覆蓋先聲明的屬性。在JavaScript中,對(duì)象也是變量,對(duì)象擁有屬性和方法等。JavaScript變量是數(shù)據(jù)值的容器,JavaScript對(duì)象則是多個(gè)被命名值的容器。5.JavaScript的自定義對(duì)象

當(dāng)聲明如下JavaScript變量時(shí),實(shí)際上已經(jīng)創(chuàng)建了一個(gè)JavaScript的String對(duì)象,String對(duì)象擁有內(nèi)建的屬性length。varstr="Hello";對(duì)于上面的字符串來(lái)說(shuō),length的值是5。String對(duì)象同時(shí)擁有若干內(nèi)建的方法。例如:str.indexOf()str.replace()str.search()2.自定義(創(chuàng)建)JavaScript對(duì)象在JavaScript中,有以下多種方法來(lái)創(chuàng)建對(duì)象。①定義和創(chuàng)建單個(gè)對(duì)象。②通過(guò)關(guān)鍵字new定義和創(chuàng)建單個(gè)對(duì)象。③先定義對(duì)象構(gòu)造方法,再創(chuàng)建構(gòu)造類型的對(duì)象。④在ES5中,也可以通過(guò)Object.create()函數(shù)來(lái)創(chuàng)建對(duì)象。通過(guò)JavaScript,用戶能夠定義并創(chuàng)建自己的對(duì)象。創(chuàng)建新JavaScript對(duì)象的方法有很多,且可以為已存在的對(duì)象添加屬性和方法。5.JavaScript的自定義對(duì)象

(1)直接使用鍵值對(duì)的形式創(chuàng)建對(duì)象。自定義JavaScript對(duì)象的規(guī)則如下。①把左花括號(hào)“{”與對(duì)象名放在同一行。②在每個(gè)屬性名與其值之間使用半角冒號(hào),且冒號(hào)后面加一個(gè)空格。③不要在最后一個(gè)鍵值對(duì)后面寫逗號(hào)。④在對(duì)象定義結(jié)束位置的新行上寫右花括號(hào)“}”,右花括號(hào)“}”前不加前導(dǎo)空格。⑤對(duì)象定義始終以分號(hào)結(jié)束。定義JavaScript對(duì)象時(shí),空格和折行都是允許的,對(duì)象定義也允許橫跨多行。以下代碼自定義(創(chuàng)建)了一個(gè)JavaScript對(duì)象。varbook={bookName:"網(wǎng)頁(yè)特效設(shè)計(jì)",author:"丁一",publishing:"人民郵電出版社",price:38.8,edition:2};5.JavaScript的自定義對(duì)象

這里定義的book對(duì)象有5個(gè)屬性,即bookName、author、publishing、price和edition,屬性值分別為"網(wǎng)頁(yè)特效設(shè)計(jì)"、"丁一"、"人民郵電出版社"、38.8、2。也可以將對(duì)象定義寫在一行或多行中。例如:varbook={bookName:"網(wǎng)頁(yè)特效設(shè)計(jì)",author:"丁一",publishing:"人民郵電出版社",price:38.8,edition:2};(2)通過(guò)賦值方式創(chuàng)建對(duì)象的實(shí)例。通過(guò)new關(guān)鍵字創(chuàng)建一個(gè)新的對(duì)象,并動(dòng)態(tài)添加屬性,從無(wú)到有地創(chuàng)建一個(gè)對(duì)象。

【示例5-14】demo0514.html創(chuàng)建一個(gè)名為book的對(duì)象,并為其添加5個(gè)屬性,代碼如下。varbook=newObject();book.bookName="網(wǎng)頁(yè)特效設(shè)計(jì)"book.author="丁一"book.publishing="人民郵電出版社"book.price=38.8book.edition=25.JavaScript的自定義對(duì)象

document.write("書(shū)名:"+book.bookName+"<br>");document.write("作者:"+book.author+"<br>");document.write("出版社:"+book.publishing+"<br>");document.write("價(jià)格:"+book.price);在JavaScript中,屬性不需要單獨(dú)聲明,在賦值時(shí)即自動(dòng)創(chuàng)建??蓪⒆远x對(duì)象的屬性值賦給變量:x=book.bookName;。在以上代碼執(zhí)行后,x的值將是"網(wǎng)頁(yè)特效設(shè)計(jì)"(3)先定義對(duì)象的原型,再使用new關(guān)鍵字來(lái)創(chuàng)建新的對(duì)象實(shí)例。創(chuàng)建對(duì)象構(gòu)造方法,例如:functionbook(bookName,author,publishing,price,edition){this.bookName=bookName;this.author=author;this.publishing=publishing;this.price=price;this.edition=edition}5.JavaScript的自定義對(duì)象

一旦創(chuàng)建了對(duì)象構(gòu)造方法,就可以創(chuàng)建新的對(duì)象實(shí)例。例如:varmyBook=newbook("網(wǎng)頁(yè)特效設(shè)計(jì)","丁一","人民郵電出版社",38.8,2);(4)對(duì)象定義的簡(jiǎn)寫。對(duì)于鍵和值,如果值是變量,并且變量和鍵同名,則可以這樣寫:letstuName='LiMin',stuAge=21;letstudent={stuName,stuAge,getName(){console.log(this.stuName)}}5.JavaScript的自定義對(duì)象

3.JavaScript對(duì)象的屬性和方法在面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言中,屬性和方法常被稱為對(duì)象的成員。(1)JavaScript對(duì)象的屬性。屬性是與JavaScript對(duì)象相關(guān)的信息。例如,汽車是現(xiàn)實(shí)生活中的對(duì)象,汽車的屬性包括品牌名、生產(chǎn)廠家、排量、重量、顏色等,所有汽車都具有這些屬性,但是每款汽車的屬性都不盡相同。汽車的方法可以是啟動(dòng)、駕駛、制動(dòng)等,所有汽車都擁有這些方法,但是它們被執(zhí)行的時(shí)間都不盡相同。JavaScript的屬性是由鍵值對(duì)組成的,即屬性名和屬性值。JavaScript對(duì)象中的“屬性名:屬性值”(name:value)被稱為對(duì)象的屬性。JavaScript對(duì)象的屬性和方法由花括號(hào)“{}”包裹,在花括號(hào)內(nèi)部,對(duì)象的屬性以“名稱:值”的形式來(lái)定義,名稱和值由半角冒號(hào)進(jìn)行分隔,多個(gè)屬性使用半角逗號(hào)“,”分隔。屬性名是變量名,應(yīng)符合變量命名規(guī)則,而值可以為任意的JavaScript對(duì)象。例如:varperson={name:"張山",sex:"男",age:19};所定義的對(duì)象person有3個(gè)屬性,即name、sex、age,屬性值分別為"張山"、"男"、19。5.JavaScript的自定義對(duì)象

(2)JavaScript對(duì)象的方法。JavaScript對(duì)象也可以有方法,方法是在對(duì)象上執(zhí)行的動(dòng)作。對(duì)象的方法是讓對(duì)象完成某些操作的函數(shù),即方法名與屬性名相似,方法與函數(shù)的定義形式相似。例如:varcollectBooks={bookName:"網(wǎng)頁(yè)特效設(shè)計(jì)",price:38.8,quantity:5,amount:function(){returnthis.price*this.quantity;}};5.JavaScript的自定義對(duì)象

4.訪問(wèn)JavaScript對(duì)象的屬性和方法在JavaScript中引用對(duì)象時(shí),根據(jù)對(duì)象的包含關(guān)系,要使用成員引用操作符“.”一層一層地引用對(duì)象。例如,要引用document對(duì)象,應(yīng)使用window.document,由于window對(duì)象是默認(rèn)的最上層對(duì)象,因此引用其子對(duì)象時(shí),可以不使用window,而直接使用document。當(dāng)引用較低層次的對(duì)象時(shí),一般有兩種方式:使用對(duì)象索引或使用對(duì)象名(或ID)。例如,要引用網(wǎng)頁(yè)文檔中的第一個(gè)表單對(duì)象,可以使用“document.forms[0]”的形式來(lái)實(shí)現(xiàn);如果該表單的name屬性為form1(或者ID屬性為form1),則也可以使用“document.forms["form1"]”的形式或直接使用“document1.form1”的形式來(lái)引用該表單。如果在名為form1的表單中包括一個(gè)名為text1的文本框,則可以使用“document.form1.text1”的形式來(lái)引用該文本框?qū)ο?。如果要獲取該文本框中的內(nèi)容,則可以使用“document.form1.text1.value”的形式。對(duì)于不同的對(duì)象,通常還有一些特殊的引用方法,例如,若引用表單對(duì)象包含的對(duì)象,則可以使用elements數(shù)組;若引用當(dāng)前對(duì)象,則可以使用this。要獲取網(wǎng)頁(yè)文檔中圖片的數(shù)量,可以使用“document.images.length”的形式。要設(shè)置圖片的alt屬性,可以使用“document.images[0].alt="圖片1";”的形式。要設(shè)置圖片的src屬性,可以使用“document.images[0].src=document.images[1].src;”的形式。5.JavaScript的自定義對(duì)象

(1)訪問(wèn)對(duì)象的屬性。屬性是與對(duì)象相關(guān)的信息。訪問(wèn)對(duì)象屬性的語(yǔ)法格式如下。①語(yǔ)法格式之一:對(duì)象名.屬性名。例如,person.age,book.bookName。②語(yǔ)法格式之二:對(duì)象名["屬性名"]。例如,person["age"],book["bookName"]。例如,使用String對(duì)象的length屬性來(lái)獲取字符串的長(zhǎng)度的代碼如下。varmessage="HelloWorld!";varx=message.length;在以上代碼執(zhí)行后,x的值為12。定義對(duì)象后可以更改其屬性,例如,person.age="20";。還可以為對(duì)象添加新屬性,例如,person.nativePlace="上海";。5.JavaScript的自定義對(duì)象

(2)訪問(wèn)對(duì)象的方法。方法是能夠在對(duì)象上執(zhí)行的動(dòng)作。①調(diào)用對(duì)象的方法。其語(yǔ)法格式如下。對(duì)象名.方法名(參數(shù)列表)例如,使用String對(duì)象的toUpperCase()方法來(lái)把文本轉(zhuǎn)換為大寫字母形式。varmessage="Helloworld!";varx=message.toUpperCase();在以上代碼執(zhí)行后,x的值是"HELLOWORLD!"。②返回對(duì)象方法的定義。若不使用圓括號(hào)“()”訪問(wèn)對(duì)象方法,則將返回對(duì)象方法的定義代碼。例如,collectBooks.amount將返回對(duì)象方法amount()的定義代碼。6.ES6使用class構(gòu)造對(duì)象ES6引入了JavaScript類,JavaScript類是JavaScript對(duì)象的模板。1.使用關(guān)鍵字class創(chuàng)建JavaScript類使用關(guān)鍵字class創(chuàng)建JavaScript類時(shí)始終添加名為constructor()的方法。其語(yǔ)法格式如下。classClassName{constructor(){…}}例如:classPerson{constructor(name,year){=name;this.year=year;}}上述示例創(chuàng)建了一個(gè)名為Person的類,該類有兩個(gè)初始屬性:name和year。6.ES6使用class構(gòu)造對(duì)象2.使用JavaScript類創(chuàng)建對(duì)象如果創(chuàng)建了一個(gè)JavaScript類,那么可以使用該類來(lái)創(chuàng)建對(duì)象。例如:letperson1=newPerson("安好",2002);letperson2=newPerson("安康",2004);以上代碼使用Person類創(chuàng)建了兩個(gè)Person對(duì)象,在創(chuàng)建新的對(duì)象時(shí)會(huì)自動(dòng)調(diào)用constructor()方法。3.JavaScript類的構(gòu)造方法為創(chuàng)建新對(duì)象而設(shè)計(jì)的函數(shù)被稱為對(duì)象構(gòu)造方法(對(duì)象構(gòu)造器)。JavaScript類的構(gòu)造方法constructor()是一種特殊的方法,用于初始化對(duì)象屬性,其特點(diǎn)如下。①它必須擁有確切名稱。②創(chuàng)建新對(duì)象時(shí)自動(dòng)執(zhí)行。③如果未定義構(gòu)造方法,則JavaScript會(huì)添加空的構(gòu)造方法。4.創(chuàng)建類方法類方法與對(duì)象方法相同,必須先使用關(guān)鍵字class創(chuàng)建類,并且要始終添加constructor()方法,再添加任意數(shù)量的類方法。其語(yǔ)法格式如下。6.ES6使用class構(gòu)造對(duì)象其語(yǔ)法格式如下。classClassName{constructor(){…}method_1(){…}method_2(){…}}

【示例5-15】demo0515.html以下代碼創(chuàng)建了兩個(gè)類方法。其中,一個(gè)類方法名為getName,該方法用于返回姓名;另一個(gè)類方法名為getAge,該方法用于返回年齡。classPerson{constructor(name,year){=name;this.year=year;}getName(){return;}6.ES6使用class構(gòu)造對(duì)象getAge(year1){returnyear1-this.year;}}letdate=newDate();letyear1=date.getFullYear();letperson1=newPerson("安好",2002);letperson2=newPerson("安康",2004);document.write("今年"+person1.getName()+person1.getAge(year1)+"歲。");document.write("<br>");document.write("今年"+person2.getName()+person2.getAge(year1)+"歲。");document.write("<br>");6.ES6使用class構(gòu)造對(duì)象ES6引入了JavaScript類,JavaScript類是JavaScript對(duì)象的模板。1.使用關(guān)鍵字class創(chuàng)建JavaScript類使用關(guān)鍵字class創(chuàng)建JavaScript類時(shí)始終添加名為constructor()的方法。其語(yǔ)法格式如下。classClassName{constructor(){…}}例如:classPerson{constructor(name,year){=name;this.year=year;}}上述示例創(chuàng)建了一個(gè)名為Person的類,該類有兩個(gè)初始屬性:name和year。6.ES6使用class構(gòu)造對(duì)象ES6引入了JavaScript類,JavaScript類是JavaScript對(duì)象的模板。1.使用關(guān)鍵字class創(chuàng)建JavaScript類使用關(guān)鍵字class創(chuàng)建JavaScript類時(shí)始終添加名為constructor()的方法。其語(yǔ)法格式如下。classClassName{constructor(){…}}例如:classPerson{constructor(name,year){=name;this.year=year;}}上述示例創(chuàng)建了一個(gè)名為Person的類,該類有兩個(gè)初始屬性:name和year。6.ES6使用class構(gòu)造對(duì)象5.類繼承如果需要使用類繼承,則可以使用extends關(guān)鍵字,使用類繼承創(chuàng)建的類將繼承其父類的所有方法。類繼承對(duì)于代碼可重用性很有用,在創(chuàng)建新類時(shí)可以重用現(xiàn)有類的屬性和方法。

【示例5-16】demo0516.html代碼如下://定義類PointclassPoint{constructor(x,y){this.x=x;this.y=y;}//不要加逗號(hào)toSting(){return`(${this.x},${this.y})`;}}6.ES6使用class構(gòu)造對(duì)象//實(shí)例化,得到一個(gè)對(duì)象varp=newPoint(10,20);console.log(p.x)console.log(p.toSting());classColorPointextendsPoint{constructor(x,y,color){super(x,y);//調(diào)用父類的constructor(x,y)this.color=color;}//不要加逗號(hào)showColor(){console.log('Mycoloris'+this.color);}}varcp=newColorPoint(10,20,"red");console.log(cp.x);console.log(cp.toSting());cp.showColor()創(chuàng)建繼承類時(shí),通過(guò)在constructor()方法中調(diào)用super()方法,調(diào)用了父類的constructor()方法,獲得了父類屬性和方法的訪問(wèn)權(quán)限。7.JavaScript的this指針在傳統(tǒng)的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中,this指針是在類中聲明的,表示對(duì)象本身,而在JavaScript中,this表示其所屬的對(duì)象,即調(diào)用者的引用。首先分析以下示例。

【示例5-17】demo0517.htmlvarstu1={//定義一個(gè)人,名字為"向東"name:"向東",age:20}varstu2={//定義另一個(gè)人,名字為"向楠"name:"向楠",age:19}functionprintName(){//定義一個(gè)全局的函數(shù)對(duì)象return;}//設(shè)置printName()的上下文為stu1,此時(shí)的this為stu1document.write(printName.call(stu1));//設(shè)置printName()的上下文為stu2,此時(shí)的this為stu2document.write(printName.call(stu2));7.JavaScript的this指針應(yīng)該注意的是,this的值并非由函數(shù)被聲明的方式而確定,而是由函數(shù)被調(diào)用的方式而確定,這一點(diǎn)與傳統(tǒng)的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言截然不同。call()是Function中的一個(gè)方法。1.this是什么?JavaScript中this指的是它所屬的對(duì)象,它擁有不同的值,具體取決于其使用位置。①在方法中,this指的是該方法的擁有者。②單獨(dú)使用時(shí),this指的是全局對(duì)象。③在函數(shù)中,默認(rèn)狀態(tài)下,this指的是全局對(duì)象。④在函數(shù)中,嚴(yán)格模式下,this是undefined。⑤在事件中,this指的是接收事件的元素。⑥在頂層調(diào)用全局函數(shù)時(shí),this指的是window對(duì)象,因?yàn)槿趾瘮?shù)其實(shí)就是window的屬性。⑦像call()和apply()這樣的方法可以將this引用到任何對(duì)象。call()和apply()方法是預(yù)定義的JavaScript方法,它們都可以用于將一個(gè)對(duì)象作為參數(shù)來(lái)調(diào)用對(duì)象方法。2.方法中的this在對(duì)象方法中,this指的是該方法的擁有者。下面的示例中,this指的是“擁有”amount()方法的collectBooks對(duì)象,即collectBooks對(duì)象是amount()方法的擁有者。7.JavaScript的this指針例如:varcollectBooks={bookName:"網(wǎng)頁(yè)特效設(shè)計(jì)",price:38.8,quantity:5,amount:function(){returnthis.price*this.quantity;}};這里this.price的意思是collectBooks對(duì)象的price屬性。3.函數(shù)中的this(1)默認(rèn)狀態(tài)(非嚴(yán)格模式)下。在JavaScript函數(shù)中,函數(shù)的擁有者默認(rèn)綁定this,因此,在函數(shù)中,this指的是全局對(duì)象。例如:functionmyFunction(){returnthis;}7.JavaScript的this指針(2)嚴(yán)格模式下。定義的(undefined)。例如:JavaScript的嚴(yán)格模式不允許默認(rèn)綁定對(duì)象,因此,在該模式下,在函數(shù)中使用this時(shí),this是未"usestrict";functionmyFunction(){returnthis;}4.事件處理程序中的this在HTML事件處理程序中,this指的是接收此事件的HTML元素。例如:<inputtype="button"onclick="this.style.display='none'"value="單擊后隱藏">8.JavaScript的正則表達(dá)式與應(yīng)用1.什么是正則表達(dá)式?正則表達(dá)式是構(gòu)成搜索模式(SearchPattern)的字符序列,當(dāng)需要搜索文本中的數(shù)據(jù)時(shí),可以使用搜索模式來(lái)描述需要搜索的內(nèi)容。正則表達(dá)式可以是單字符,也可以是更復(fù)雜的模式。正則表達(dá)式可用于執(zhí)行所有類型的文本搜索和文本替換操作。正則表達(dá)式的語(yǔ)法格式如下。/pattern/attributes例如:varpatt=/is/i;這里的/is/i是一個(gè)正則表達(dá)式,其中is表示在搜索中使用的模式,i表示對(duì)字母大小寫不敏感的修飾符,即is、Is、iS、IS都可以搜索到。2.正則表達(dá)式的修飾符修飾符可用于對(duì)字母大小寫不敏感的全局搜索,正則表達(dá)式的修飾符如表5-7所示。8.JavaScript的正則表達(dá)式與應(yīng)用(1)i修飾符。i修飾符用于執(zhí)行對(duì)字母大小寫不敏感的匹配。所有主流瀏覽器都支持i修飾符。

【示例5-18】demo0518.html對(duì)字符串中的is進(jìn)行全局且不區(qū)分字母大小寫的搜索的代碼如下。varstr="Isthisallthereistodrink?";varpatt1=/is/ig;document.write(str.match(patt1));搜索結(jié)果中包含全部的is,搜索結(jié)果為"Is,is,is"。(2)g修飾符。覽器都支持g修飾符。g修飾符用于執(zhí)行全局匹配,即查找所有匹配項(xiàng)而非在找到第一個(gè)匹配項(xiàng)后停止查找。所有主流瀏

【示例5-19】demo0519.html對(duì)字符串中的is進(jìn)行全局搜索的代碼如下。varstr="Isthisallthereistodrink?";varpatt1=/is/g;document.write(str.match(patt1));8.JavaScript的正則表達(dá)式與應(yīng)用由于字符串str中Is的首字母為大寫形式,所以搜索結(jié)果中不包含Is,只包括其后的2個(gè)is。(3)m修飾符。分別表示行首和行尾。都有一個(gè)^和一個(gè)$。m修飾符規(guī)定正則表達(dá)式可以執(zhí)行多行匹配,它的作用是修改^和$在正則表達(dá)式中的作用,讓它們?cè)谀J(rèn)狀態(tài)下,一個(gè)字符串無(wú)論是否換行都只有一個(gè)^和一個(gè)$,如果采用多行匹配,那么每一個(gè)行

【示例5-20】demo0520.html對(duì)字符串中的is進(jìn)行多行搜索的代碼如下。varstr="\nIsth\nisall\nthereistodrink?";varpatt1=/^is/;document.write(str.match(patt1));//匹配失敗,搜索結(jié)果為"null"document.write("<br>");varpatt1=/^is/m;document.write(str.match(patt1));//搜索結(jié)果為"is”上述代碼中,在多行字符串中搜索is時(shí),如果沒(méi)有加m修飾符(即/^is/),則匹配失敗,因?yàn)樽址拈_(kāi)頭沒(méi)有is字符;加上m修飾符(即/^is/m)后,^表示行首,因?yàn)閕s在字符串第2行的行首,所以可以成功匹配到is。8.JavaScript的正則表達(dá)式與應(yīng)用3.正則表達(dá)式的模式符(1)帶方括號(hào)的模式表達(dá)式。方括號(hào)用于查找某個(gè)范圍內(nèi)的字符,帶方括號(hào)的模式表達(dá)式如表5-8所示。8.JavaScript的正則表達(dá)式與應(yīng)用(2)模式表達(dá)式中的元字符。元字符(Metacharacter)是擁有特殊含義的字符,模式表達(dá)式中的元字符如表5-9所示。8.JavaScript的正則表達(dá)式與應(yīng)用(3)模式表達(dá)式中的量詞。模式表達(dá)式中的量詞如表5-10所示。9.JavaScript的RegExp對(duì)象及其用法在JavaScript中,RegExp對(duì)象是帶有預(yù)定義屬性和方法的正則表達(dá)式對(duì)象,它是對(duì)字符串執(zhí)行模式匹配的強(qiáng)大工具。當(dāng)檢索某段文本時(shí),可以使用一種模式來(lái)描述要檢索的內(nèi)容,RegExp對(duì)象就是這種模式。簡(jiǎn)單的模式可以是一個(gè)單獨(dú)的字符,更復(fù)雜的模式包括更多的字符,可進(jìn)行解析、格式檢查、替換等,用戶可以規(guī)定字符串中的檢索位置,以及要檢索的字符類型等。1.創(chuàng)建RegExp對(duì)象(1)創(chuàng)建RegExp對(duì)象的語(yǔ)法格式如下。newRegExp(pattern,attributes);(2)RegExp對(duì)象的參數(shù)說(shuō)明。參數(shù)pattern表示一個(gè)字符串,用于指定正則表達(dá)式的模式或其他正則表達(dá)式。參數(shù)attributes表示一個(gè)可選的字符串,包含修飾符g、i和m,分別用于指定全局匹配、不區(qū)分字母大小寫的匹配和多行匹配。ECMAScript標(biāo)準(zhǔn)化之前,不支持m修飾符。如果pattern是正則表達(dá)式,而不是字符串,則必須省略該參數(shù)。(3)RegExp對(duì)象的返回值。一個(gè)新的RegExp對(duì)象具有指定的模式和標(biāo)志。如果參數(shù)pattern是正則表達(dá)式,那么RegExp()構(gòu)造方法將使用與指定的RegExp對(duì)象相同的模式和標(biāo)志創(chuàng)建一個(gè)新的RegExp對(duì)象。9.JavaScript的RegExp對(duì)象及其用法如果不使用new關(guān)鍵字,而將RegExp()作為函數(shù)調(diào)用,那么它的行為與用new關(guān)鍵字調(diào)用時(shí)的一樣,只是當(dāng)pattern是正則表達(dá)式時(shí),它只返回pattern,而不再創(chuàng)建一個(gè)新的RegExp對(duì)象。(4)創(chuàng)建RegExp對(duì)象時(shí)拋出的異常。創(chuàng)建RegExp對(duì)象時(shí)可能會(huì)拋出以下兩種異常。①SyntaxError:如果pattern不是合法的正則表達(dá)式,或attributes含有g(shù)、i和m之外的字符,則創(chuàng)建RegExp對(duì)象時(shí)會(huì)拋出該異常。②TypeError:如果pattern是RegExp對(duì)象,但沒(méi)有省略attributes參數(shù),則拋出該異常。2.創(chuàng)建RegExp對(duì)象的修飾符創(chuàng)建RegExp對(duì)象的修飾符如表5-11所示。9.JavaScript的RegExp對(duì)象及其用法3.RegExp對(duì)象的屬性RegExp對(duì)象的屬性如表5-12所示。9.JavaScript的RegExp對(duì)象及其用法4.RegExp對(duì)象的方法RegExp對(duì)象有兩種方法:test()和exec()。(1)test()方法。test()方法用于檢測(cè)一個(gè)字符串是否匹配某個(gè)模式,或者檢索字符串中是否包含指定值,返回值是true或f

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論