检测对象
一、检测对象的属性、方法是否存在
打印obj对象:
结果如下:
这些属性其实就是系统自带的:
因此对象的属性和方法分为两类。
二、分类:
第一类:对象本身的属性
第二类:对象原型身上的属性/方法
三、检测方式(3种):
方式一:in
语法: 属性 in 对象
返回: 布尔值
#对象身上的
是否有对象,那么返回结果是布尔值(true or false)
这里有name对象,因此返回true
#对象没有的,返回false
#对象原型身上的属性:
方式二:hasOwnProperty
语法: 对象.hasOwnProperty(属性名称)
返回: 布尔值
#检测对象自身的属性:
#name123对象本来是没有的,肯定是false
#toString属于对象原型,而这个方法解释是检测对象自身的,因此也是false。
方式三:propertyIsEnumerable(和方式二类似)
语法: 对象. propertyIsEnumerable (属性名称)
返回: 布尔值
#hasOwnProperty和propertyIsEnumerable区别:
打印都可以弹出name、age,因此这叫可枚举(即name和age可以遍历出来)。
#让obj这个对象的name属性不可枚举
这时候只能打印出age属性,name属性就不可枚举了,但是这个属性还在。
#在不可枚举之后,如果再去打印以下两种情况,那么结果就不同了:
小结:
hasOwnProperty 不可枚举 也返回true
propertyIsEnumerable 不可枚举 返回false