- 對象屬性名為變量時,不能用"."硼身,要用"[ ]",但是不能加雙引號覆享;
- 基本數(shù)據(jù)類型是對鍵值對的引用佳遂,引用數(shù)據(jù)類型是對地址的引用;
- 基本數(shù)據(jù)類型撒顿,對值的引用:
var a=123; var b=a; b+=3; console.log(a); console.log(b);*/ //打印出來的值中丑罪,a為123;b為126凤壁;
- 引用數(shù)據(jù)類型吩屹,是對地址的引用:
var a=[1,2,3,4] var b=a; b[4]=5; console.log(a); console.log(b); //打印出來的a為[1,2,3,4,5],b也為[1,2,3,4,5], // b引用的地址與a的地址為同一個地址拧抖,當(dāng)改變b中的元素時煤搜,a也會改變;
- 普通對象的遍歷:for-in
var a={ name:"guobin",age:26,sex:"男"}; var b={}; for( var attr in a){ b[attr]=a[attr];//對象的克隆; } b.insert="meihao";//給b添加自定義屬性唧席; console.log(a); console.log(b); //打印出來的結(jié)果:a={name: "guobin", age: 26, sex: "男"}; //b={name: "guobin", age: 26, sex: "男", insert: "meihao"};
- 基本數(shù)據(jù)類型撒顿,對值的引用:
- 數(shù)組常用的方法:
- 學(xué)習(xí)思路擦盾,需要關(guān)注4點:
- 方法的作用;
- 是否需要參數(shù)淌哟;
- 是否有返回值迹卢,返回值內(nèi)容;
- 原來數(shù)組是否改變徒仓;
- 第一組:數(shù)組元素的增加腐碱,刪除,替換——原來數(shù)組會發(fā)生變化掉弛;
- push()
- 作用:給數(shù)組末尾增加一項症见;
- 參數(shù):需要實參,為增加項的內(nèi)容狰晚;內(nèi)容為元素筒饰,不是數(shù)組;
- 返回值:新數(shù)組的長度壁晒;
- 原來數(shù)組發(fā)生改變瓷们;
- pop()
- 作用:刪除數(shù)組最后一項;
- 參數(shù):不需要;
- 返回值:刪除項的內(nèi)容谬晕;
- 原來數(shù)組發(fā)生改變碘裕;
- unshift()
- 作用:給數(shù)組開頭添加一項;
- 參數(shù):需要實參攒钳,為增加項的內(nèi)容帮孔;內(nèi)容為元素,不是數(shù)組不撑;
- 返回值:新數(shù)組的長度文兢;
- 原來數(shù)組發(fā)生改變;
- shift()
- 作用:刪除數(shù)組第一項焕檬;
- 參數(shù):不需要姆坚;
- 返回值:刪除項的內(nèi)容;
- 原來數(shù)組發(fā)生改變实愚;
- splice():刪除兼呵,插入,替換
- 語法:splice(index,deleteCount,替換的內(nèi)容)腊敲;
- index:從數(shù)組中開始的索引值击喂;(若參數(shù)中只添加index值,則從index值開始碰辅,后面的元素全部刪除)
- deleteCount: 刪除元素的個數(shù)懂昂;(不可省略,若省略則為添加的內(nèi)容不能插入乎赴,除了只有index的情況)
- 替換的內(nèi)容:可省略忍法,即無添加內(nèi)容;
- 返回值:刪除的元素重新構(gòu)成的數(shù)組榕吼;若沒有刪除內(nèi)容饿序,則返回空數(shù)組;
- 原來的數(shù)組會發(fā)生變化羹蚣;
- 三種形式代碼:
- 插入:arr.splice(2,0,"neirong");//刪除個數(shù)不能省略原探,省略后,插入失效顽素,在制定位置的插入咽弦;
- 刪除:arr.splice(2,3);//當(dāng)刪除個數(shù)省略時,從2開始胁出,刪除3個后面的元素型型;
- 替換:arr.splice(2,2,"neirong1","neirong2");//替換的個數(shù)與刪除的個數(shù)可以不相等;
- 實例:克隆一份給變量
var arr1=["mei","hao","de","yi","tian","a"] //需求:克隆一份arr1給arr2全蝶,不考慮arr1是否改變 var arr2=arr.splice(0); //運行的結(jié)果中闹蒜,arr1為空數(shù)組寺枉,arr2內(nèi)容與arr1原來相同;
- push()
- 第二組:截取/查找绷落、拼接姥闪、克隆——原來數(shù)組不會發(fā)生變化;
- slice(m,n)
- 作用:截取砌烁,克隆
- 參數(shù):m,n-從索引m開始筐喳,查找到索引n結(jié)束,包前(m代表的元素)不包后(n代表的元素)函喉;
- m:start,開始查找的索引值避归;正負(fù)整數(shù),當(dāng)為-1時函似,即倒數(shù)第一個元素
- n:end,結(jié)束查找的索引值槐脏,正負(fù)整數(shù),可省略撇寞,當(dāng)省略時,即從開始一直到末尾堂氯;
- 返回值:被選取的數(shù)組元素構(gòu)成的新數(shù)組蔑担;
- 原來數(shù)組不發(fā)生改變;
- 實例:請查找到[m,n]項:即找到m到n項
var ree=arr.slice(m-1,n);//第m項對應(yīng)的索引值為m-1
- 功能:克隆數(shù)組
var rew=arr.slice(0);//或arr.slice()
- concat()
- 作用:數(shù)組拼接咽白,克隆
- 參數(shù):
- 數(shù)組名啤握,多個數(shù)組之間用逗號相連
- 數(shù)組元素,起到添加元素的功能晶框,即arr.concat(["mei","hao"]);注:元素可以不是數(shù)組排抬,可以是數(shù)字,即concat([1,2,3],[2])與concat([1,2,3],2)結(jié)果是一樣的授段;
- 返回值:拼接成的新數(shù)組蹲蒲;
- 原數(shù)組不發(fā)生改變;
- 功能:克隆
var rew=arr.concat();//不填加參數(shù)侵贵,即達(dá)到克隆的效果届搁;
- slice(m,n)
- 第三組:數(shù)組轉(zhuǎn)字符串——原來數(shù)組不會發(fā)生變化;
- toString()
- 作用:數(shù)組轉(zhuǎn)字符串窍育;
- 參數(shù):無卡睦;
- 返回值:以逗號連接每個數(shù)組元素構(gòu)成的字符串;
- 原數(shù)組沒有發(fā)生改變漱抓;
var arr=[1,2,3,4,5,6]; var str=arr.toString(); console.log(str);//打印的結(jié)果是"1,2,3,4,5,6"—其中","為一個字符;
- join()
- 作用:以特定符號連接數(shù)組元素形成新的字符串表锻;
- 參數(shù):任意符號,用于連接數(shù)組元素乞娄;
- 返回值:以制定符號拼接數(shù)組元素形成的字符串瞬逊;
- 原數(shù)組沒有發(fā)生改變显歧;
- eval():把字符串作為JS代碼來執(zhí)行;
- 實例1:如果參數(shù)設(shè)置為運算符號码耐,將字符串實現(xiàn)運算
var arr=[1,2,3,4,5,6]; var str=arr.join("+"); console.log(str);//打印的結(jié)果是"1+2+3+4+5+6"—其中"+"為一個字符; var sum=eval(str);//sum值為加法運算求和值;
- 實例2:字符串str1="alert(123)",通過eval()使字符串轉(zhuǎn)化為JS代碼執(zhí)行追迟;
var str1="alert(123)"; eval(strl);//頁面彈出123;
- toString()
- 第四組:數(shù)組的翻轉(zhuǎn)和排序——原來數(shù)組會發(fā)生變化骚腥;
- reverse():翻轉(zhuǎn)
- 功能:數(shù)組元素倒著寫出來敦间;
- 參數(shù):沒有;
- 返回值:返回一個跟原來被翻轉(zhuǎn)后的數(shù)組一樣的數(shù)組束铭;
- 原數(shù)組發(fā)生改變廓块;
- sort():排序
- 功能:數(shù)組元素排序;
- 參數(shù):函數(shù)契沫;
- 返回值:返回一個跟原來被排序后的數(shù)組一樣的數(shù)組带猴;
- 原數(shù)組發(fā)生改變;
ary.sort(function(a,b){ return a-b;//升序:從小到大排列懈万; return b-a;//降序:從大到小排列拴清; });
- reverse():翻轉(zhuǎn)
- 第五組:數(shù)組常用但不兼容的方法:
- indexOf()
- 功能:查找特定的元素內(nèi)容;
- 參數(shù):要查找的內(nèi)容会通;
- 返回值:如果找到口予,則返回內(nèi)容對應(yīng)的索引值/位置;如果沒找到涕侈,返回-1沪停;
- 原數(shù)組沒有發(fā)生變化;
- forEach()
- forEach()用來遍歷數(shù)組裳涛;
- forEach()有兩個參數(shù):1)callback回調(diào)函數(shù)木张;2)context:用來改變this指向;
- 回調(diào)函數(shù)中有三個參數(shù):1)數(shù)組的對應(yīng)的內(nèi)容端三;2)索引舷礼;3)原數(shù)組
- context是用來改變this指向的,可傳可不傳技肩,如果不傳的話且轨,默認(rèn)this是window;如果傳了按傳的來虚婿;
- 返回值:undefined; 沒有返回值旋奢;
- 原數(shù)組不發(fā)生變化;
var arr=["mei","hao","de","yi","tian","a"]; var objm={}; arr.forEach(function (item,index,input) { console.log(this); },objm);
- map():也是遍歷數(shù)組然痊,跟forEach()功能一樣至朗,只是forEach()沒有返回值,map有返回值剧浸;
- indexOf()
- 學(xué)習(xí)思路擦盾,需要關(guān)注4點:
- 實例:驗證碼的獲取代碼:獲取四個不重復(fù)的代碼锹引;
<script>
var str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var arr=[];
//思路1:利用while循環(huán)進(jìn)行判斷
while(arr.length<4){
var rnd=Math.round(Math.random()*61);//獲取0到61之間隨機(jī)數(shù)
if(arr.indexOf(str[rnd])===-1){//查找數(shù)組中的是否已經(jīng)存在該元素矗钟,若沒有則輸出-1;
arr.push(str[rnd]);
}
}
//思路2:利用for循環(huán)進(jìn)行判斷
for(var i=0; i<4; i++){
var rnd=Math.round(Math.random()*61);//獲取0到61之間隨機(jī)數(shù)
if(arr.indexOf(str[rnd])===-1) {//查找數(shù)組中的是否已經(jīng)存在該元素嫌变,若沒有則輸出-1吨艇;
arr.push(str[rnd]);
}else{
i--;//如果數(shù)組中已經(jīng)存在元素了,就必須重新再進(jìn)行循環(huán)腾啥,通過i-1來保證循環(huán)拿到的元素個數(shù)东涡;
}
}
</script>
- 隨機(jī)數(shù)的獲取: 獲取[n,m]的隨機(jī)數(shù)代碼:
var rnd=Math.round(Math.random()*(m-n)+n);
;
<script>
var rnd=Math.round(Math.random()*61);//獲得0-61之間的隨機(jī)數(shù)代碼
</script>
- 封裝步驟:
- 把除了父容器以外的函數(shù),都剪切倘待,放到一個新的函數(shù)中疮跑,并起個名字;
- 把函數(shù)中可變的部分凸舵,作為形參祖娘;
- 在外面調(diào)用函數(shù),并傳入實參啊奄;
- 把html部分渐苏,復(fù)制多份,對待寬度不同的個別部分菇夸,分別設(shè)置整以;
- 獲取所有的父容器,逐個遍歷后峻仇,調(diào)用函數(shù);
<body>
<div class="wrap" style="width:803px;">....</div>
<div class="wrap">....</div>
<div class="wrap" style="width:401px;">....</div>
<script>
var oawrap=document.getElementsByClassName("wrap");
for(var i=0; i<oawrap.length; i++){
tab(oawrap[i]);//調(diào)用函數(shù)邑商,添加實參
}
function tab(ioawrap) {
var oli=ioawrap.getElementsByTagName("li");
var odiv=ioawrap.getElementsByTagName("div");
for(var i=0;i<oli.length; i++){
oli[i].index=i;
oli[i].onclick=function () {
for(i=0;i<oli.length; i++){
oli[i].className= "";
odiv[i].className="hide";
}
this.className="active";
odiv[this.index].className="show";
}
}
}
</script>
</body>
- 知識點掌握:
- 數(shù)據(jù)類型及區(qū)別摄咆;
- 九九乘法表
- 選項卡兩種思路:自定義屬性,函數(shù)閉包人断;
- 求和函數(shù):實參個數(shù)不確定下的求和函數(shù)(arguments);
- 數(shù)組的常用方法:14種吭从;
- 隨機(jī)驗證碼:兩種思路:for循環(huán)和while循環(huán);