我们可以使用for循环通过length找出数组中的值,但对象中我们没有length,于是我们可以使用枚举的方法遍历数组中的属性
<script>
// var du = {
// weight : '70kg',
// height : '180cm',
// age : 20,
// sex : 'male'
// }
//枚举
// for(var key in du){ //key这个名字可以随意
// console.log(du.key); //此时的key就是对象中的属性 du.key 在底层会被转化为du['key']
// } //输出的结果为四个undefined 因为转化成du['key']之后 就相当于去找du对象中的 key属性,
// //然而并没有这个属性 因此我们根据底层原理换一种写法 du[key]
// for(var key in du){
// console.log(du[key]); //这样就不会将key当作属性
// }
//三种判断方法 1、hasOwnProperty() 2、in 3、instanceof
//但我们最好还应该给枚举加一个过滤,防止其将它继承过来的属性一并遍历
var du = {
weight : '70kg',
height : '180cm',
age : 20,
sex : 'male',
__proto__ : {
name : 'bai'
}
}
for(var key in du){
if(du.hasOwnProperty(key)){ //1、 使用hasOwnProperty()方法,判断是否是自己的属性
console.log(du[key]);
}
}
//2、使用if('height' in du) 会返回一个布尔值 判断对象是否含有这个属性,他与 hasOwnProperty()的区别在于
//in 方法认为对象继承来的属性也算自己的例如原型
//3、instanceof
// 用法 A instanceof B 含义:看A对象的原型链上有没有B的原型 或者 A 对象是不是 B 对象构造出来的
// 例如 [] instanceof Array 会返回 true
</script>