數(shù)組與對(duì)象
數(shù)組
JavaScript數(shù)組就是對(duì)象肯腕,每個(gè)數(shù)組都有一個(gè)length屬性笔喉。
區(qū)別與使用
- 數(shù)組使用整數(shù)作為屬性名,對(duì)象隨意甥材。
- 當(dāng)屬性名是小而連續(xù)的整數(shù)時(shí),應(yīng)該使用數(shù)組性含,否則使用對(duì)象洲赵。
區(qū)分?jǐn)?shù)組和對(duì)象
/*
* 《JavaScript語言精粹》 P60例子
*/
var is_array = function(value) {
return value && typeof value ==='object' && value.constructor === Array;
}
var is_array = function(value) {
return Object.prototype.toString.apply(value) === '[Object Array]';
}
for ... in與 for ... of遍歷
for ... in
枚舉一個(gè)對(duì)象的所有屬性名(或鍵名),在每次循環(huán)中,object的下一個(gè)屬性名字符串被賦值給variable叠萍。
- 可用來遍歷數(shù)組芝发,遍歷時(shí)無法保證屬性的順序。
- 可用來遍歷對(duì)象的所有屬性的名字苛谷,也會(huì)遍歷出所有從原型鏈中繼承而來的成員屬性辅鲸。
for ... of
ES6規(guī)范,可遍歷所有部署了Symbol.iterator屬性的所有數(shù)據(jù)結(jié)構(gòu)腹殿。用法與for ... in類似
區(qū)別
- for ... in 循環(huán)對(duì)象讀取鍵名独悴,for ... of 讀取鍵值。
- 遍歷數(shù)組時(shí)锣尉,for ... of 值返回具有數(shù)字索引的屬性刻炒,for ... in返回全部屬性。
/*
* 《ES6標(biāo)準(zhǔn)入門》 P176例子
*/
let arr = [3, 5, 7];
arr.foo = 'hello';
for (let i in arr) {
console.log(i); //"0", "1", "2", "foo"
}
for (let in in arr) {
console.log(i); //"3", "5", "7"
}