久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

一周一話(huà)題之四(JavaScript,、Dom,、jQuery全面復(fù)習(xí)總結(jié)<js篇>)

 goldbomb 2014-02-18

-->目錄導(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)行,。

③ 安全性:不允許訪(fǎng)問(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ī)則:以字母、下劃線(xiàn)或$開(kāi)頭,,中間可以包括字母,、數(shù)字、下劃線(xiàn)或$

(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)型(也稱(chēng)為基本數(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"字符串,。

④ 訪(fǎng)問(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è)面都能訪(fǎng)問(wèn)到的變量,;

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

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

在每個(gè)<script></script>中都可以訪(fǎng)問(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ù)名稱(chēng)采用“駝峰命名法”,,而非C#中的帕斯卡命名法

-->函數(shù)重載

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

② 利用arguments實(shí)現(xiàn)js函數(shù)重載:通過(guò)arguments對(duì)象可以判斷用戶(hù)在調(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()方法,,獲取方法的源代碼

② 例子

復(fù)制代碼
<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>
復(fù)制代碼

(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原理圖:

image

-->繼承

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

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

復(fù)制代碼
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();
復(fù)制代碼

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

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

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

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

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

回到導(dǎo)航

5. 事例代碼下載

《代碼下載》

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多