JS对象的成员访问检测instanceof、isPrototypeOf、hasOwnProperty、propertyIsEnumerable

81 阅读1分钟

1.instanceof:判断该对象是否为另一个对象的实例。

image.png

image.png

2.isPrototypeOf:判断一个对象是否为一个实例的原型。

image.png

3.hasOwnProperty:判断对象是否有某个特定的属性,(注意说的是对象的属性,而不是对象原型的属性)必须用字符串指定该属性。

image.png

4.propertyIsEnumerable:判断给定的属性是否可以用for...in语句进行枚举。

由于for...in枚举是包含原型链上的属性的,但propertyIsEnumerable作用于原型方法上时,始终是返回false的。(for...in可以枚举对象本身的属性和原型上的属性,而propertyIsEnumerable只能判断本身的属性是否可以枚举)。

注意:预定义的属性不是可列举的,而用户定义的属性总是可列举的。如果只想遍历对象本身的属性,可以如下代码:

代码:

	<script type="text/javascript">
		for(var key in obj){
			if(obj.propertyIsEnumerable(key)){
				console.log(key)
			}
		}
	</script>

拓展: 好处在于:这个函数可以检测所有函数它的构造函数是什么类型的

image.png

image.png