[js中的數組]
1 數組的概念:可以再內存中連續存儲的多個有序元素的結構
元素的順序:稱為下標,通過下標查找對應元素。
2 數組的聲明:
① 通過字面量聲明 var arr1 = [,,,,];
JS中,同一數組,可以存儲多種不同的數據類型(但,一般同一數組只存放同種數據類型)
例如 var arr1 = [1,"2",true,[1,2,3,4],{"name":"aaa"}];
② new關鍵字聲明 var arr2 = new Array(參數);
>>> 參數可以為;
a. 為空;聲明一個沒有指定長度的數組
b. 數祖的length:聲明一個指定長度的數祖,但是數祖的長度隨時可變可追加;
c. 數祖默認的N個值:new Arry(1,"2",true);相當於[1,"2",true];
3 數祖中元素的讀寫
① 讀寫: 通過下標來訪問元素 例如arr[2]
② 增刪:delete arr[n] 刪除數組的第n+1個值 但數組的長度不變,對應位置的值為undefined;
arr3.push(值);數祖最后增加一個值,相當於arr3[arr3.length] = 7 ;
arr3.unshift(值):數祖的第0位插入一個值,其余位數順延;
arr3.pop();刪除數祖的最后一位,與delete不同的是 pop執行后數祖的長度也會減少一個 相當於arr.length-=1;
arr3.shift():刪除數祖的第0位,長度也會減一
4數祖中其他的常用方法
① join("分隔符");將數組用指定分隔符分隔,鏈接為字符串,參數為空時,默認用逗號分隔。
② concat():將數組與多個數組的值鏈接為新的數組
[1,2].concat([3,4],[5,6])=[1,2,3,4,5,6]//鏈接時,中括號最多插一層
[1,2].concat([1,2,[3,4]])=[1,2,1,2,[3,4]];多層中括號,以二維數組的形式存在。
③ push():數組最后增加一個數 unshift():數組開始增加一個數[返回數組新的長度]
pop():刪除數祖的最后一位數 shift():刪除數祖的第0位 [返回被刪除的值]
【調用上述方法,原數組均會改變】
④ reverse():【原數組被改變】數組翻轉,逆序排列
⑤ slice(begin,end):[原數組不會被改變]截取數組中的某一部分,成為新數組
>>>傳遞一個參數,默認為begin index 從這個開始,截取到最后一個;
>>>傳遞兩個參數,截取從begin到end區間,左閉右開 包含begin,不含end;
>>>參數可以為負數,負一為最后一個;至多到負一;
⑥ sort(function)[原數組會被改變]對數組進行排序
>>>不指定排序函數,按照數值的ascli碼值進行排序;
>>>傳入排列參數,默認兩個參數a b;
arr3.sort(function(a,b){
return a-b;//b在前 a在后 升序排列
return b-a //a在前 b在后 降序排列
});
5 indexOf(value,index);返回數組中第一個value值所對應的下標位置。若未找到返回-1
lastIndexOf(value,index); 返回數組中最后一個value值所對應的下標位置。若未找到返回-1
>>> 若未指定index參數,默認在數組中所有參數查詢
>>> 若指定index參數,則從當前index開始,向后查詢
6 二維數組&稀疏數組(了解)
① 稀疏數組 :數組並不含有從0開始到length-1的所有索引(length值比實際個數多)
② 二維數組 :var arr = [[1,2],[3,4],[5,6]];//相當於三行兩列的矩陣
取出二維數組元素 arr[行號][列號]; //可使用嵌套循環便利
7 引用數據類型和基本數據類型
引用數據烈性: (數組/對象)賦值時。是將原變量的地址,賦給新變量,兩個變量實際上操作的是同一份數據,所以,修改其中一個變量,另一個跟個變化
基本數據類型: 賦值時,是將原變量的值,賦值給新變量,兩個變量屬於不同的內存空間,修改其中一個,另外一個不變。
內置對象
Number對象
Number.MAX_VALUE 可表示的最大數
Number.MIN_VALUE 可表示的最小數
.teString():將數字轉化為字符串 相當於num+""
.valueOf():返回number對象的基本數字值
.toFixed(2):將數字轉化為字符串,保留n位小數,四舍五入。
.toLocaleString():將數字按照本地格式的順序轉化為字符串,一般,三個一組加逗號。
.toPrecision():將數字格式化為指定長度,n =不含小數點的所有位數的和
字符串string
1 屬性:str.length 返回字符串的長度
2 方法:
str.toLowerCase();所有字符轉為小寫;
str.toUpperCase();所有字符轉為大寫;
str.charAt(n);截取字符串中的第n個字符
str.indexOf("查詢子串",index):查詢從index開始的,第一個子串的索引,沒找到的返回-1;通數組的indexOf()方法;
str.substring(begin,end)截取子串
>>>只寫一個參數:從begin開始,到最后
>>>寫兩個參數:從begin開始,到end結束 左閉右開;
str.replace("old","new");將字符串中,第一個old 替換為new; 第一個參數可以為普通字符串也可以為正則表達式,(普通字符串只能匹配一個) 正則表達式則根據具體搶礦區分。
.split(""):將字符串 通過指定分隔符分為數組,傳入""空字符串,將把單個字符存入數組。
Daste類
1 new Date(""):拿到當前最新時間;
new Date("2017,4,,17,17:26:17") 設置指定時間
2 常用方法:
.getFullYear(1992,10,3) 獲取四位年份
.getMonth() 獲取月份0~11
.getDate() 獲取一個月中的某一天0~31
.getDay() 獲取一星期中的某一天0~6
.getHours() 返回Date 對象的小時;(0~23);
.getMinutes() 返回Date 對象的分鍾;(0~59);
.getSeconds() 返回Date 對象的秒數;(0~59);
自定義對象
1 基本概念:
① 對象:是包含一系列無需屬性和方法的集合
② 鍵值對:對象中的數據是以鍵值對的形式存在的,以鍵取值
③ 屬性:描述對象特征的一系列變量,【對象中的變量】
④ 方法:貓叔對象行為的一系列方法,【對象中的函數】
2 對象的聲明:
① 自變量聲明:
var obj = {
k1:value1,//屬性;
k2:value,
func: function(){};//方法
}
對象中的鍵,可以使任何數據類型,但一般用作普通變量名(不需要"")即可。
對象中的值,可以使任何數據類型,但,字符串的話必須用""包裹
多組建值對之間用英文逗號分隔,鍵值對的鍵與值之間用英文冒號分隔;
② new關鍵字 var list = new Objiect();
lisi.name = "李四";
lisi.say = function(){
console.log("我是"+this.name);
}
3 對象中屬性和方法的讀寫:
① .運算符:對象內部:this.屬性名 this.方法名()
對象外部:對象名.屬性名 對象.方法名()
② 通過["key"]調用, 對象名["屬性名"] 對象名["方法名"]();
>>>如果key中包含特殊字符,則無法使用第①種方式,必須使用第②種;
>>>對象中:直接寫變量名,默認為調用全局變量,如果需調用對象自身屬性,則需要通過this關鍵字;
③ delete 對象名.屬性名或者方法名;刪除對象的屬性和方法
JQuery
JQuery 語法
1 JQuery("選擇器").action();通過選擇器調用事件函數
但JQuery中,JQurey可以用$代替,即$("選擇器").action();
①選擇器可以直接用Css選擇器,選中元素
②.action() 表示對元素執行的操作。
2 文檔就緒函數:防止了文檔在完全加載(就緒)之前運行JQuery代碼;
$(document).ready(function(){
$("p").hide(5000);
$("p").fadeIn(5000);
})
簡寫:$(function(){});
[文檔就緒函數與window.onload區別]
①window.onload需在網頁所有內容加載完成后執行(包括圖片音頻)
文檔就緒函數,只需要在網頁DOM結構加載以后便執行
②window。onload只能寫一個,寫多個只會執行最后一個
文檔就緒函數 可以寫多個,也絕不會被覆蓋
3 JQuery對象與源生DOM對象互轉
①源生DOM對象轉JQuery對象:$(DOM對象)
var p =document.getElmentsbytagname("p");
$(p);//轉換為jquey對象
②JQuery對象 $("p")[0] $("p").get(0)
$("#p")[0].style.color = "red";
$("#p").get(0).style.color = "red"
事件綁定快捷方式
$("button:first").click(function(){
alert(1)
});
使用on綁定事件
①使用on進行單事件綁定
$("button").on("click",function(){
//$(this) 取到當前調用函數的對象
console.log($(this).text());
})
②使用on同時為多個事件綁定,同一函數
$("button").on("mouseover click",function(){
console.log($(this).html());
})
③調用函數時傳入自定義參數
$("button").on("click",{name:"jianghao"},function(event){
//使用event.data.屬性名找到傳入的參數
console.log(event.data.name);
})
④使用on進行多事件多函數綁定
$("button").on({
click:function(){
console.log("click");
},
mouseover:function(){
console.log("mouseover")
}
})
⑤使用on進行事件委派
>>>將原本需要綁定到某元素上的事件綁定到父元素乃至根節點上,然后委派給當前元素生效。
eg:$("p").click(function(){});
$(document).on("click","p",function(){});
>>>作用
默認的綁定方式,只能綁定到頁面初始時已有的p元素,當頁面增加新的p元素時,無法綁定到新元素上
使用事件委派方式,當頁面 添加新元素時,可以為頁面所有新元素綁定事件
off取消事件綁定
1 $("p").off():取消所有事件
2 $("p").off("click"):取消點擊事件
3 $("p").off("click mouseover"):取消多個事件
4 $(document).off("click""p"):取消事件委派
使用.one() 綁定的事件只能執行一次
$("button").one("click",function(){
alert(1)
})
.trigger("event"):自動觸發某元素的事件
$("p").trigger("click",["haha","hehe"]);
觸發事件時傳遞參數
動畫
.show() 讓隱藏的元素直接顯示,修改元素的寬度,高度,opacity屬性
① 不傳參:讓隱藏的元素直接顯示,不進行動畫
② 傳入時間:多少毫秒之內完成動畫。
③ 傳入(時間,函數):完成動畫之后回調函數。
show()動畫執行效果,修改元素的寬度,高度,opacity屬性
.hide():讓顯示元素隱藏,與show相反。
.slideDown()讓隱藏元素顯示,效果為從上往下,增加高度
.slideup()讓顯示元素隱藏,效果為從下往上,減少高度
.slideToggle():讓隱藏的顯示,讓顯示的隱藏
.fadeOut()讓顯示元素隱藏,淡出
.fadeIn()讓隱藏元素顯示 淡入
.fadeToogle()讓隱藏的顯示,讓顯示的隱藏 淡入淡出
.fadeTo(事件,透明度,函數)同.fadeToogle 但是多了透明度參數,可以指定顯示的最終透明度。
$("p").animate({
width:"10px",
opacity:"0.2"
},5000,"linear",function(){
alert("donghua")
})
JQuery高級
HTTP:超文本傳輸協議。
URL:統一資源定位符
組成: 協議名://主機名(IP地址):端口號/項目資源地址?傳遞參數鍵值對#錨點
eg: http://127.0.0.1:8080/jd/index.html?name=jianghao
localhost或127.0.0.1表示本機IP
JSON 對象
1、JSON對象是鍵值對的集合,鍵與值之間用":"分隔,多個鍵值對之間,用","分隔
2、多個JSON對象,可以放到數組中去。JSON對象和數組,可以相互嵌套;
JSON的鍵,必須是字符串。