1.對象
所謂對象,就是一種無序的數(shù)據(jù)集合,由若干個“鍵值對”(key-value)構(gòu)成。
var o = {
name: 'mumu';
age: 20;
sex: 'female',
};
訪問對象屬性的方式:
-
objName.property,property類型必須以_/字符開頭,固定值,不能是變量 -
objName['property'],property類型為任意類型,可以是數(shù)字,可以是變量,例如:
var o = {
1: 'a',
'1p': "Hello World",
'h w': "Hello World",
'p+q': "Hello World"
};
//遍歷對象中使用
for (var key in obj){
obj[key] = .......
}
注:
對象的所有鍵名都是字符串,所以加不加引號都可以。
如果鍵名是數(shù)值,會被自動轉(zhuǎn)為字符串。
但是,如果鍵名不符合標(biāo)識名的條件(比如第一個字符為數(shù)字,或者含有空格或運算符),也不是數(shù)字,則必須加上引號,否則會報錯。(鍵名是數(shù)值,不加引號,不會報錯,但是鍵名第一個字符為數(shù)字,還有其他字符,不加引號,就會報錯)
2.json對象
1.什么是json
JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言。 易于人閱讀和編寫,同時也易于機器解析和生成(網(wǎng)絡(luò)傳輸速度)。
json和xml一樣,都是一種存儲數(shù)據(jù)格式。
語法:
- 數(shù)據(jù)在名稱/值對中,用且只能用
" "包裹 - 數(shù)據(jù)由逗號分隔
- 花括號保存對象
- 方括號保存數(shù)組
例如:
{
"firstName": "John",
"lastName": "Smith",
"sex": "third",
"age": 25,
"address":
{
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber":
[
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
2.json對象
采用json數(shù)據(jù)格式的對象。(javascript覺得json這種數(shù)據(jù)格式很好,將其引入到j(luò)avascript里面,即有了json對象)
var obj = {
"firstName": "John",
"lastName": "Smith",
"sex": "third",
"age": 25,
}
json對象和javascript中普通對象:javascript將json數(shù)據(jù)格式做了簡化(key可以不使用" "包裹,字符串可以用' '等)和變通(對象的屬性可以是函數(shù),正則表達式),形成了javascript里面的對象。即json對象是js中的一個子集。
var obj = {
firstName: "John",
lastName: "Smith",
sex: "third",
age: 25,
sayName:function(){
},
}
3.JSON對象(IE8以上版本可使用)
瀏覽器內(nèi)置對象,有屬性和方法。
常使用的方法是
-
JSON.parse('string')(將字符串轉(zhuǎn)化為對象) -
JSON.stringify(obj)(將對象轉(zhuǎn)化為字符串)
4.數(shù)組
數(shù)組常用方法:
push():在數(shù)組的尾部增加一個元素,index和length都加一,參數(shù)為要添加的元素值;
pop():在數(shù)組的尾部刪除一個元素,index和length都減一;
shift(): 刪除數(shù)組index最小元素,index和length都減一;
unshift():數(shù)組頭部添加一個元素,參數(shù)為要添加的元素值;
join():數(shù)組以指定分隔符連接成字符串返回,參數(shù)為分隔符樣式;
split():字符串按照規(guī)定的分隔符分割為數(shù)組,參數(shù)為分隔符樣式;
用 splice函數(shù)分別實現(xiàn)push、pop、shift、unshift方法:
var arr = [1,2,3,4];
arr.splice(arr.length, 0, 5);//push
console.log(arr);
arr.splice(arr.length - 1, 1);//pop
console.log(arr);
arr.splice(0, 1);//shift
console.log(arr);
arr.splice(0, 0, 1);//unshift
console.log(arr);
清空數(shù)組的方式:
- length = 0;//將數(shù)組存儲的數(shù)據(jù)清空。將原來的數(shù)據(jù)清空
- [];用空數(shù)組賦值。申請了一塊新的空地
區(qū)別舉例:
var arr1 = [2, 3, 4];
var arr2 = arr1;
arr1.length = 0;//arr1為空,arr2也為空
arr1 = [];//arr1為空,arr2不變
遍歷數(shù)組元素的方法:
- for循環(huán)
- forEach()//修改原數(shù)組
- map()//原數(shù)組不變,返回新數(shù)組
使用舉例:
var arr = [2, 4, 6];
//改變元素組
function squareArr(arr){
for (var i = 0; i < arr.length; i++){
arr[i] *= arr[i];
}
}
squareArr(arr);
console.log(arr);// [4, 16, 36]
//改變元素組
arr.forEach(function(e,i,array){
array[i] = e * e;
});
console.log(arr);// [4, 16, 36]
//返回新數(shù)組
var arr = [2, 3, 4];
var newArray = arr.map(function(e){
return e * e;
})
console.log(newArray);// [4, 16, 36]