數(shù)據(jù)類型檢測(cè)有4種方法
- type of 主要用于基本數(shù)據(jù)類型檢測(cè),不能具體檢測(cè)出引用數(shù)據(jù)類型
- constructor 可以檢測(cè)出當(dāng)前這個(gè)對(duì)象具體屬于哪個(gè)類
- instance of (obj instance of Object ) 判斷摸個(gè)對(duì)象是否屬于某個(gè)類,返回的應(yīng)該是個(gè) 布爾值
- Object.prototype.toString.call() 可以打印出對(duì)象的詳細(xì)信息;
函數(shù)基本知識(shí)
- 函數(shù) 由兩部分 構(gòu)成
- 函數(shù)的定義階段
- 調(diào)用階段
函數(shù)定義3步驟
1、開辟一個(gè) 內(nèi)存空間,給這個(gè)空間起個(gè)名字
2、 把函數(shù)體內(nèi)所有JS代碼,作為字符串,存在這個(gè)內(nèi)存空間中
3、 把空間地址,賦值給函數(shù)名;
函數(shù)調(diào)用2步驟
1、 形成一個(gè)私有作用域;
2、 把內(nèi)存中的字符串,作為JS代碼來執(zhí)行
關(guān)于函數(shù)的返回值
- 返回值: return
- undefined出現(xiàn)的情況:
- 函數(shù)沒有寫return,返回的就是undefined
- 函數(shù)寫了return,但是沒有賦值,返回的還是undefined
- 沒有給實(shí)參值,返回是undefined
- 沒有此屬性,返回是undefined
參數(shù)
- 參數(shù)包含實(shí)參和形參
- 形參:形參在函數(shù)定義階段
- 實(shí)參:在函數(shù)調(diào)用階段
- 定義形參,但沒有傳實(shí)參,拿到的是undefined;
- arguments.callee:拿到的是當(dāng)前函數(shù)本身;
- 函數(shù)包含有名函數(shù)和匿名函數(shù)
1:匿名函數(shù):給元素的某個(gè)屬性綁定一個(gè)函數(shù)表達(dá)式;
2:匿名函數(shù):函數(shù)自己調(diào)用自己;
閉包:
1、當(dāng)函數(shù)被調(diào)用的時(shí)候,會(huì)形成一個(gè)私有作用域,保護(hù)里面的變量不受外界的干擾,函數(shù)的這種保護(hù)機(jī)制,叫做閉包;
2、自函數(shù)可以使用父函數(shù)的私有變量;
數(shù)組常用的方法
增加,刪除和替換
- 給末尾增加 push()
- 功能:給數(shù)組末尾增加一個(gè)或多個(gè)
- 參數(shù):有
- 返回值:數(shù)組的長(zhǎng)度
- 原始數(shù)組是否改變:是
- 從末尾刪除 pop()
- 功能:刪除數(shù)組最后一個(gè)
- 參數(shù):無
- 返回值:被刪除的內(nèi)容
- 原始數(shù)組是否改變:是
- 給開頭增加 unshift()
- 功能:給數(shù)組開頭增加一個(gè)或多個(gè)
- 參數(shù):有,一個(gè)或多個(gè)
- 返回值:數(shù)組的長(zhǎng)度
- 原始數(shù)組是否改變:是
- 從數(shù)組開頭刪除 shift()
- 功能:從數(shù)組開頭刪除一項(xiàng)
- 參數(shù):無
- 返回值:被刪除的內(nèi)容
- 原始數(shù)組是否改變:是
- 操作數(shù)組的任何位置,進(jìn)行增加,刪除,替換 splice
-
刪除
- 參數(shù)是一個(gè)的時(shí)候,代表從當(dāng)前索引,一直刪完
- 參數(shù)是兩個(gè)的時(shí)候 splice(2,3)
- 從索引2開始,刪除3個(gè)
- 被刪除的內(nèi)容以一個(gè)新數(shù)組的形式返回
-
增加
- 參數(shù) 三個(gè) ary.splice(2,0,'aa','bb')
- 從索引2開始,增加'aa' 'bb',增加的內(nèi)容插入到索引2的前面
- 返回值:無
- 原始數(shù)組是否改變:是
- 參數(shù) 三個(gè) ary.splice(2,0,'aa','bb')
-
替換
- 參數(shù) 三個(gè) ary.splice(2,2,'aa','bb')
- 返回值:被刪除的內(nèi)容,以一個(gè)新數(shù)組的形式返回;
- 原始數(shù)組是否改變:是
-
數(shù)組克隆和拼接
- slice(n,m) 從索引n克隆到索引m,但是包前不包后;
- 原始數(shù)組不變
- 題:克隆第n項(xiàng)到第m項(xiàng)[n,m],包含n和m,請(qǐng)用數(shù)組的一個(gè)方法來實(shí)現(xiàn);
- ary.slice(n-1,m)
- 克隆 ary.slice(0) / ary.slice()
- concat 拼接
- ary1.concat(ary2,ary3);
- 克隆 ary.concat() 不要傳參;
數(shù)組的翻轉(zhuǎn)和排序
- 數(shù)組的翻轉(zhuǎn) reverse()
- 返回值:就是翻轉(zhuǎn)后的新數(shù)組
- 原始數(shù)組發(fā)生改變;
- 數(shù)組的排序 sort()
ary.sort(function(n,m){
return n-m; //從小到大排
//return m-m //從大到小排
})
數(shù)組轉(zhuǎn)字符串
- ary.toString() 把數(shù)組轉(zhuǎn)成以逗號(hào)分割的字符串;
- ary.join('拼接形式')
- 配合eval()可以實(shí)現(xiàn)數(shù)學(xué)運(yùn)算
數(shù)組常用但不兼容的方法
- ary.indexOf() 查找數(shù)組中是否有某項(xiàng),如果有返回對(duì)應(yīng)內(nèi)容的索引,如果沒有返回-1;
- ary.forEach()
- forEach接收兩個(gè)參數(shù),一個(gè)callback,thisArg
- callback接收三個(gè)參數(shù):1)item 2)index 3)input
- thisArg用來改變callback中的this指向;
- forEach 沒有返回值,但是map有返回值
- ary.map()
數(shù)組小總結(jié)
- 給數(shù)組末尾增加一項(xiàng)有哪些方法?
- push()
- splice(ary.length,0,'xxx')
- ary[ary.length]=xxx;