什么是对象:
在 JavaScript 中,几乎”所有事物”都是对象。
- 布尔是对象(如果用 new 关键词定义)
- 数字是对象(如果用 new 关键词定义)
- 字符串是对象(如果用 new 关键词定义)
- 日期永远都是对象
- 算术永远都是对象
- 正则表达式永远都是对象
- 数组永远都是对象
- 函数永远都是对象
- 对象永远都是对象
所有 JavaScript 值,除了原始值,都是对象。
对象中有很多属性值,我们怎么拿到这些属性值呢?我们需要遍历!
在javascript里遍历是必不可少的一项重要内容, 从刚入前端坑开始,就会学到遍历的方法,就是for循环,while循环和do while循环。。。
那我们要怎样进行对象的遍历?
最开始我们学到数组,对数组进行遍历,可以用for循环,后来我们又学到对象,但是对象不能用for循环遍历,为什么呢?
我们可以先试一下;
这是数组的用for循环遍历:
var arr = ["hahaha",4,5,6,"lalla"];
for(var i=0;i<arr.length;i++){
// i现在是数组的索引
// console.log(i);
// 根据数组的索引拿到数组的数据
console.log(arr[i]);
}
这是对象用for循环遍历:
var obj = {
name:"admin",
age:16,
sex:"男"
};
console.log(obj);
for(var i=0;i<obj.length;i++){
console.log(obj[i]);
}
// 此时什么都不会出现
这是什么原因:
数组其实就是一个对象,有序的集合,可以用循环进行遍历。
有序:从0开始到length-1结束。
对象本来就是对象,无序的集合。
对象没有索引,没有从0开始到哪结束。
对象只有键,没有顺序,不能用循环遍历。
所以我们需要用到javaScript提供了遍历语句for-in(功能类似循环),可以遍历没有索引的集合,也被称为枚举。
语法:
for (var key in object) {
要执行的代码
}
如:
for(var i in obj){
// i是所有的key(属性值)
console.log(obj[i]);
}
输出的截图为:
注意:
- console.log(obj.i);// 错误遍历方式
- console.log(obj[i]);//正确遍历方式
for 与 for…in 的区别
- for : 每判断一次是否符合当前数据的长度再循环 , 知道不符合条件即刻停止 , 安全系数高
- for…in :是对应于一个对象或数组的每个执行一个或多个语句
优缺点:
for:
- 优点:程序简洁,结构清晰,循环初始化,循环变量化,循环体和循环条件位置突出
- 缺点:结构比while循环复杂,容易出编码错误
for in:(它大部分用于遍历对象)
- 定义:用于循环遍历数组或对象属性,fot in循环里面的index是string类型的, 代码每执行一次,就会对数组的元素或者对象的属性进行一次操作
- 缺点:某些情况下,会出现随机顺序的遍历,因为里面的值是string类型,所以增加了转换过程,因此开销较大
- 优点:可以遍历数组的键名,遍历对象简洁方便。(逆战必胜)