中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
一周一話題之四(JavaScript、Dom、jQuery全面復(fù)習(xí)總結(jié)<js篇>)

-->目錄導(dǎo)航

一、 JavaScript

    1. js介紹

    2. js語(yǔ)法

    3. js進(jìn)階

    4. js高級(jí)

    5. 事例代碼下載

一、 JavaScript

做BS系統(tǒng),JavaScript的使用是少不了的;本文就帶你快速回顧一下JavaScript的基本知識(shí),看看哪些基礎(chǔ)知識(shí)是你所遺漏的

1. js介紹

① js是一種基于對(duì)象和事件的腳本語(yǔ)言,使用瀏覽器來(lái)執(zhí)行。

② js是解釋型語(yǔ)言,無(wú)需編譯就可隨時(shí)運(yùn)行。

③ 安全性:不允許訪問(wèn)本地硬盤(pán);跨平臺(tái):有支持js的瀏覽器即可。

④ 在網(wǎng)頁(yè)中編寫(xiě)js代碼推薦使用外部引用的方式,這樣可以多個(gè)頁(yè)面共享js代碼,達(dá)到代碼復(fù)用。

回到導(dǎo)航

2. js語(yǔ)法

(1) 大小寫(xiě)敏感,嚴(yán)格區(qū)分大小寫(xiě)。

(2) 定義字符串,可以使用“雙引號(hào)”,也可使用“單引號(hào)”,推薦使用單引號(hào)與html避免沖突。

(3) js是“弱類(lèi)型”語(yǔ)言,支持“動(dòng)態(tài)類(lèi)型”,沒(méi)有顯示數(shù)據(jù)類(lèi)型,聲明變量都用var

(4) 網(wǎng)頁(yè)中的js代碼應(yīng)該放到<script></script>標(biāo)簽中,<script>標(biāo)簽可以放到<head>、<body>等任意位置,并且一個(gè)頁(yè)面可以有不止一對(duì)<script></script>標(biāo)簽。

(5) 每條語(yǔ)句后用“;”來(lái)結(jié)尾,可以方便做js壓縮并且提高代碼可讀性

(6) 變量命名規(guī)則:以字母、下劃線或$開(kāi)頭,中間可以包括字母、數(shù)字、下劃線或$

(7) 關(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

保留字: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、implements、protected、volatile、double、import、public

(8) 注釋

單行注釋?zhuān)?// ;塊級(jí)注釋?zhuān)?strong>/* */;推薦使用單行注釋

(9) 數(shù)據(jù)類(lèi)型

js中有5種簡(jiǎn)單數(shù)據(jù)類(lèi)型(也稱為基本數(shù)據(jù)類(lèi)型):Undefined(未定義) 取值-undefined、Null(空對(duì)象) 取值-null、Boolean(布爾) 取值-true或false、Number(數(shù)字) 取值-所有數(shù)字,包含整數(shù)和小數(shù),范圍相當(dāng)于double、String(字符串) 取值-。還有1種復(fù)雜數(shù)據(jù)類(lèi)型——Object(對(duì)象類(lèi)型) 取值-任何對(duì)象,本質(zhì)上是由一組無(wú)序的名值對(duì)組成的。

typeof運(yùn)算符用來(lái)檢測(cè)變量的數(shù)據(jù)類(lèi)型

"undefined"——如果這個(gè)值未定義;

"boolean"  ——如果這個(gè)值是布爾值;

"string"   ——如果這個(gè)值是字符串;

"number"   ——如果這個(gè)值是數(shù)值;

"object"   ——如果這個(gè)值是對(duì)象或null;

"function" ——如果這個(gè)值是函數(shù);

(10) 其它語(yǔ)句如if、while、for等等與C#幾乎一致

(11) 轉(zhuǎn)義字符“\”也與C#一樣

回到導(dǎo)航

3. js進(jìn)階

(1) ==與===

==、!=:對(duì)于其兩邊的表達(dá)式,如果類(lèi)型相同,則直接比較,如果不同,則嘗試轉(zhuǎn)換成為相同類(lèi)型再判斷;==認(rèn)為null與undefined、undefined與undefined是相等的

===、!==:判斷前不進(jìn)行類(lèi)型轉(zhuǎn)換,===兩邊必須類(lèi)型相同、值也相同時(shí)才會(huì)返回true

(2) null與undefined

null:表示一個(gè)有意義的值,表示“無(wú)值”或“無(wú)對(duì)象”,變量的狀態(tài)為已知狀態(tài);通過(guò)設(shè)置對(duì)象為null,來(lái)釋放對(duì)對(duì)象的引用,以便瀏覽器回收內(nèi)存。

undefined

① 聲明變量但未賦值時(shí),變量的值為undefined

② 方法沒(méi)有return語(yǔ)句返回值時(shí),返回undefined

③ 未聲明的變量,通過(guò)typeof()檢測(cè)變量時(shí),返回"undefined"字符串。

④ 訪問(wèn)不存在的屬性時(shí)返回undefined

注:把null轉(zhuǎn)換為數(shù)字,結(jié)果為0。而把undefined轉(zhuǎn)換為數(shù)字結(jié)果為NaN。

(3) 判斷變量是否可用

變量不可用:變量聲明未賦值、變量未聲明就使用、變量值為null

判斷:

if(typeof(v) !='undefined' && v != null)

推薦寫(xiě)法:if(v)   --這里會(huì)把v先轉(zhuǎn)換為boolean類(lèi)型再判斷 ;對(duì)于null、undefined、0、空字符串就會(huì)轉(zhuǎn)換為false

(4) 變量作用域

① 全局變量:在頁(yè)面上直接聲明的變量,“全局”是指在整個(gè)當(dāng)前頁(yè)面都能訪問(wèn)到的變量;

默認(rèn)屬于windows成員

直到頁(yè)面關(guān)閉或?yàn)g覽器關(guān)閉才釋放資源

在每個(gè)<script></script>中都可以訪問(wèn)到

容易引起“命名沖突”

② 函數(shù)內(nèi)部變量:作用范圍為當(dāng)前函數(shù)內(nèi)部

③ 沒(méi)有塊級(jí)作用域范圍,所以在方法中任何地方聲明的變量都是在整個(gè)方法中有效。

④ 聲明變量可以用“var”,也可不用,不用“var”聲明的變量是全局變量;

⑤ js中同樣不能有重名的變量,js發(fā)現(xiàn)變量重復(fù)后悔自動(dòng)忽略后面的聲明,只是用第一次聲明的變量

注:推薦在js聲明變量時(shí)要用var,且少使用全局變量

(5) 數(shù)據(jù)類(lèi)型轉(zhuǎn)換

① 字符串轉(zhuǎn)化數(shù)字 

字符串轉(zhuǎn)換為整數(shù):parseInt(numString, [radix]) radix 為要解析的字符串的基數(shù)。該值介于 2 ~ 36 之間。如果省略該參數(shù)或其值為 0,則數(shù)字將以 10 為基礎(chǔ)來(lái)解析。如果它以 “0x” 或 “0X” 開(kāi)頭,將以 16 為基數(shù)。如果該參數(shù)小于 2 或者大于 36,則 parseInt() 將返回 NaN。

字符串轉(zhuǎn)化為小數(shù):parseFloat(numString)

② 任意類(lèi)型到指定類(lèi)型

轉(zhuǎn)為字符串:String(object)、對(duì)象.toString()

轉(zhuǎn)為Boolean:Boolean(object)

轉(zhuǎn)化為數(shù)字:Number(object)

NaN:當(dāng)某類(lèi)型轉(zhuǎn)化為數(shù)字失敗時(shí),返回NaN,表示不是一個(gè)數(shù)字;NaN不等于任何值,包括它自己,判斷時(shí)需要使用isNaN(arg)函數(shù)

(6) eval() 函數(shù)

eval() 函數(shù)可將字符串轉(zhuǎn)換為代碼執(zhí)行,并返回一個(gè)或多個(gè)值.

如果eval函數(shù)在執(zhí)行時(shí)遇到錯(cuò)誤,則拋出異常給調(diào)用者.

類(lèi)似的函數(shù)是loadcode ,loadcode并不立即執(zhí)行代碼,而是返回一個(gè)函數(shù)對(duì)象.

并且loadcode支持路徑參數(shù),eval并不支持. eval并不支持代碼中的return語(yǔ)句,而是將代碼作為表達(dá)式直接計(jì)算出結(jié)果.

注:不推薦使用,效率低且不安全

(7) String對(duì)象

length屬性:獲取字符串的字符個(gè)數(shù)。(無(wú)論中文字符還是英文字符都算1個(gè)字符。)

charAt(index)方法:獲取指定索引位置的字符。(索引從0開(kāi)始)

indexOf(‘字符串’,startIndex)方法:獲取指定字符串第一次出現(xiàn)的位置。startIndex表示從第幾個(gè)開(kāi)始搜索。

split(‘分隔符’,limit);//根據(jù)分隔符將一個(gè)字符串返回為一個(gè)數(shù)組。limit表示要返回的數(shù)組的最大長(zhǎng)度(可自定義)。多個(gè)

隔符使用正則表達(dá)式:var msg = 'a★b★c☆d☆e#f';var vals = msg.split(/☆|★|#/);alert(vals);

substr(startIndex,len)//從startIndex開(kāi)始,截取len個(gè)字符。

substring(startIndex,stopIndex)//從startIndex開(kāi)始,截取到stopIndex位置(不包括stopIndex所在的字符)。

toUpperCase()//轉(zhuǎn)換大寫(xiě)、toLowerCase();//轉(zhuǎn)換小寫(xiě)

match()、replace()、search()方法,正則表達(dá)式相關(guān)

(8) 普通函數(shù)

-->基礎(chǔ)

① 使用function關(guān)鍵字

② 無(wú)返回值類(lèi)型

③ 無(wú)參數(shù)的類(lèi)型

④ JavaScript中函數(shù)永遠(yuǎn)有返回值,如果沒(méi)有執(zhí)行return語(yǔ)句,則返回undefined。(把函數(shù)當(dāng)做“構(gòu)造函數(shù)”時(shí),return語(yǔ)句將不返回)

⑤ 易錯(cuò):自定義函數(shù)名不要與不要和js內(nèi)置、dom內(nèi)置等系統(tǒng)函數(shù)名重名。如selectAll、focus等函數(shù)名不要用

⑥ 函數(shù)名稱采用“駝峰命名法”,而非C#中的帕斯卡命名法

-->函數(shù)重載

① js中沒(méi)有重載的概念,當(dāng)遇到多個(gè)重名的方法后,最后一個(gè)方法定義會(huì)覆蓋前面的所有方法定義

② 利用arguments實(shí)現(xiàn)js函數(shù)重載:通過(guò)arguments對(duì)象可以判斷用戶在調(diào)用函數(shù)時(shí),是否傳遞了參數(shù),以及傳遞了幾個(gè)參數(shù),相當(dāng)于C#中的params,它是用起來(lái)像數(shù)組的一個(gè)對(duì)象,但arguments對(duì)象本身并不是數(shù)組對(duì)象。

③ 例子

function add(){    var sum = 0;    for(var i =0; i < arguments.length; i++){        sum += arguments[i];    }}

注:推薦使用“命名參數(shù)”增加程序可讀性

-->“函數(shù)”即“對(duì)象”

① 對(duì)象成員

length屬性,獲取方法命名參數(shù)的個(gè)數(shù)

prototype屬性、arguments屬性(函數(shù)執(zhí)行時(shí)才可獲?。?/p>

toString()方法,獲取方法的源代碼

② 例子

<script type="text/javascript">        function getUserName() {            var first_name = ‘Li';            var last_name = ‘Li';            return last_name + first_name;        }        //此時(shí)user_name中為函數(shù)getUserName()執(zhí)行完畢后的返回值        //var user_name = getUserName();        //此時(shí)user_name就相當(dāng)于是函數(shù)getUserName        var user_name = getUserName;        alert(user_name); //相當(dāng)于user_name.toString()獲取函數(shù)的源代碼        alert(user_name.length); //獲取函數(shù)的參數(shù)的個(gè)數(shù)        var result = user_name(); //調(diào)用該函數(shù)        alert(result);    </script>

(9) 調(diào)試與排錯(cuò):可以利用vs和chrome、firefox瀏覽器中設(shè)置斷點(diǎn)進(jìn)行調(diào)試

回到導(dǎo)航

4. js高級(jí)

(1) 函數(shù)聲明與變量聲明預(yù)解析

① 函數(shù)預(yù)解析:在頁(yè)面中的所有函數(shù)定義語(yǔ)句,都會(huì)在代碼執(zhí)行前進(jìn)行“預(yù)解析”,在“預(yù)解析”的時(shí)候,對(duì)于重名的函數(shù)就會(huì)用最后一次定義覆蓋所有前面的定義。

② 變量聲明預(yù)解析:對(duì)于在函數(shù)內(nèi)部定義的局部變量,無(wú)論是定義在函數(shù)的任何位置,在函數(shù)執(zhí)行前也會(huì)進(jìn)行“預(yù)解析”,會(huì)把變量聲明語(yǔ)句“置頂”解析。也就是說(shuō)無(wú)論變量聲明語(yǔ)句在函數(shù)的任何地方,都會(huì)被認(rèn)為是寫(xiě)在了函數(shù)一開(kāi)始的部分,所以后面的語(yǔ)句都可以直接使用這些變量了。但注意:這里只會(huì)把變量聲明的語(yǔ)句“預(yù)解析”,賦值語(yǔ)句并不會(huì)一同被“解析”。

(2) 匿名函數(shù)

將函數(shù)定義語(yǔ)句當(dāng)做一個(gè)表達(dá)式來(lái)處理,它可以減少函數(shù)命名問(wèn)題,并且減少文件的字節(jié)數(shù)。

① 寫(xiě)法一:

var fn = function (x, y) { return x + y; };(勿忘分號(hào)) 調(diào)用:alert(fn(10,20));  應(yīng)用之一:設(shè)置事件處理程序。

② 寫(xiě)法二:

var result = (function (x, y) { return x + y; })(10, 20); 調(diào)用:alert(result);

③ 寫(xiě)法三:

var fn = new Function("x,y,z", "var sum=x+y+z;alert(sum);"); 調(diào)用:fn(10, 20, 30);

(3) 數(shù)組

① 介紹:js中通過(guò)Array對(duì)象創(chuàng)建數(shù)組,它是集成數(shù)組、ArrayList集合、Hashtable集合、棧集合、隊(duì)列集合等的一個(gè)“超強(qiáng)綜合體”

② 使用:var ages = new Array();ages[0]=10;ages[1]=16;

通過(guò)for循環(huán)來(lái)遍歷:for(var i=0;i<ages.length;i++)

注:用length來(lái)獲取數(shù)組元素中的個(gè)數(shù)

③ 其它聲明方式

new Array(size)//聲明數(shù)組初始長(zhǎng)度為size

new Array(a,b,c…)//聲明數(shù)組并設(shè)置初始值

推薦使用數(shù)組字面量:var arr =[12,‘ok’,true]

④ 沒(méi)有多維數(shù)組,只能嵌套數(shù)組 :var arr = [12, ‘ok’,[‘a(chǎn)bc’,false]]

⑤ Array的方法:toString,join,reverse、concat、sort、push、pop、shift、unshift、slice、splice等等

⑥ Array鍵值對(duì)集合:鍵值對(duì)聲明 var arr={'dawei':'大衛(wèi)','jim':'吉姆'};

Array數(shù)組本身就是一個(gè)鍵值對(duì)集合,“普通數(shù)組”,即通過(guò)下標(biāo)來(lái)獲取元素,只不過(guò)是一個(gè)“特殊的鍵值對(duì)集合”而已,把下標(biāo)作為“鍵”,把數(shù)組元素最為值。

當(dāng)鍵是整數(shù)時(shí)認(rèn)為是“普通數(shù)組”,length屬性具有長(zhǎng)度。

當(dāng)鍵是非整數(shù)字符串時(shí)認(rèn)為是“鍵值對(duì)集合”。

不建議將“普通數(shù)組”與“鍵值對(duì)集合”混用。

遍歷:

for (var key in arrayDict) {      console.log(key + '......' + arrayDict[key]);}

(4) 面向?qū)ο?/p>

① 介紹

JavaScript中沒(méi)有“類(lèi)”的概念,全都是對(duì)象?!昂瘮?shù)”是對(duì)象,通過(guò)new 關(guān)鍵字調(diào)用“函數(shù)”創(chuàng)建的也是對(duì)象。

函數(shù)本身是一個(gè)“函數(shù)對(duì)象”,而通過(guò)new關(guān)鍵字調(diào)用“函數(shù)”創(chuàng)建的對(duì)象又是另外一個(gè)對(duì)象,是兩個(gè)不同的對(duì)象。

js中的面向?qū)ο笠捕际峭ㄟ^(guò)維護(hù)變量的作用域等方式來(lái)模擬的

② 構(gòu)造函數(shù)

構(gòu)造函數(shù)也是函數(shù),只是調(diào)用時(shí)使用new關(guān)鍵字;

構(gòu)造函數(shù)使用“帕斯卡”命名;

創(chuàng)建帶參數(shù)的構(gòu)造函數(shù):通過(guò)this關(guān)鍵字初始化成員;

linstanceof關(guān)鍵字,判斷對(duì)象是否屬于某個(gè)“類(lèi)型”(構(gòu)造函數(shù)); ex:p1 instanceof Person

③ js模擬“類(lèi)”

-->prototype屬性

prototype是“函數(shù)對(duì)象”的屬性,可實(shí)現(xiàn)類(lèi)似C#中擴(kuò)展方法的功能;

注:不要為“內(nèi)置對(duì)象”隨便添加新成員。防止混亂,可以對(duì)自定義對(duì)象通過(guò)該方式來(lái)添加新成員。

prototype原理圖:

-->繼承

js中的“繼承”一般通過(guò)prototype來(lái)實(shí)現(xiàn)的,也可以通過(guò)apply和call來(lái)進(jìn)行模擬實(shí)現(xiàn)

任何類(lèi)型都直接或間接繼承自O(shè)bject

function Person(){   }   Person.prototype.hello = "hello";   Person.prototype.sayHello = function(){     alert(this.hello);   }     function Child(){   }   Child.prototype = new Person();//這行的作用是:將Parent中將所有通過(guò)prototype追加的屬性和方法都追加到Child,從而實(shí)現(xiàn)了繼承   Child.prototype.world = "world";   Child.prototype.sayWorld = function(){     alert(this.world);   }     var c = new Child();   c.sayHello();   c.sayWorld();

擴(kuò)展:《js中call與apply用法》、《js繼承的實(shí)現(xiàn)》

(5) 函數(shù)閉包(變量作用域問(wèn)題)

在一個(gè)函數(shù)內(nèi)部又定義了一個(gè)函數(shù),內(nèi)部函數(shù)函數(shù)能訪問(wèn)外部函數(shù)作用域范圍內(nèi)的變量,這時(shí)這個(gè)內(nèi)部函數(shù)就叫做閉包。無(wú)論這個(gè)內(nèi)部函數(shù)在哪里被調(diào)用都能訪問(wèn)的到外部函數(shù)作用域中的那些變量

作用:匿名自執(zhí)行函數(shù)、實(shí)現(xiàn)緩存、實(shí)現(xiàn)封裝、實(shí)現(xiàn)面向?qū)ο笾械膶?duì)象

擴(kuò)展:《js閉包的作用》

回到導(dǎo)航

5. 事例代碼下載

《代碼下載》

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
JavaScript01天學(xué)習(xí)筆記分享
JavaScript(1) -- JS入門(mén)
TS vs JS基礎(chǔ)類(lèi)型
1. JavaScript 與 PHP 的語(yǔ)法區(qū)別
JavaScript基礎(chǔ)學(xué)習(xí)目錄
javascript筆記
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服