hasOwnProperty() 方法用来判断某个对象是否含有指定的自身属性。
propertyIsEnumerable()是用来检测属性是否属于某个对象的,如果检测到了,返回true,否则返回false,下面为大家介绍下其具体的使用
判断某个属性是否存在与某个对象中,可以通过in运算符,hasOwnProperty()和propertyIsEnumerable()方法来完成.
in运算符,如果对象的自有属性或继承属性中包含这个属性,则返回true.
对象的hasOwnProperty()方法用来检测给定的名字是否是对象的自有属性.
propertyIsEnumerable()是hasOwnProperty()的增强版,只有检测到时自有属性且这个属性的可枚举性为true时才能返回true.
in运算符,如果对象的自有属性或继承属性中包含这个属性,则返回true.
对象的hasOwnProperty()方法用来检测给定的名字是否是对象的自有属性.
propertyIsEnumerable()是hasOwnProperty()的增强版,只有检测到时自有属性且这个属性的可枚举性为true时才能返回true.
/*
propertyIsEnumerable()是用来检测属性是否属于某个对象的,如果检测到了,返回true,否则返回false.
1.这个属性必须属于实例的,并且不属于原型.
2.这个属性必须是可枚举的,也就是自定义的属性,可以通过for..in循环出来的.
只要符合上面两个要求,就会返回true;
*/
function MyObject() {
this.name = "我是实例的属性";
}
var obj = new MyObject();
console.log(obj.propertyIsEnumerable("name"));//true
MyObject.prototype.say = "我是原型的属性";
console.log(obj.propertyIsEnumerable("say")); //false
for (var key in obj) {
console.log(key);
}
输出://name,say
obj.hasOwnProperty("name") //true
由于 for ... in 枚举是包含原型链上的属性的,所以如果你只想遍历对象本身的属性,可以:
for (var key in obj) {
console.log(key);
}
输出://name,say for (var key in obj) {
if (obj.hasOwnProperty(key) {
console.log(key);
}
}
//输出:name