js中的属性检测

js中的属性检测,主要就是检测一个属性是否属于某个对象。常用的方式主要有3种:in、hasOwnProperty()、propertyIsEnumerable()。

in运算符

in运算符的左侧为属性名称,右侧为对象。

var obj = {
    name:"Nicholas",
    age: 12,
    job: "Teacher"
};
console.log("name" in obj);  //true
console.log("salary" in obj);  //false

因为在对象obj中有name属性,所以在"name" in obj语句中的结果为true,而属性"salary"既不在对象obj中,也没有在obj继承的对象中,所以语句"salary" in obj的结果为false。

hasOwnProperty()

hasOwnProperty()是对象的一个方法,可以用来检测一个属性是否是对象的自有属性,如果是自有属性(包括内置属性和可编辑属性)就返回true,否则返回false。

var obj = {
    name:"Nicholas",
    age: 12,
    job: "Teacher"
};
console.log(obj.hasOwnProperty("salary"));  //false
console.log(obj.hasOwnProperty("name"));  //true

salary不是对象obj的自有属性,所以打印出了false,而name则是obj的自有属性,所以结果就是true。

propertyIsEnumerable()

propertyIsEnumerable()是hasOwnProperty()的增强版,除了是自身属性外,还要求是可枚举属性,即我们创建的属性。

var obj = {
    name:"Nicholas",
    age: 12,
    job: "Teacher"
};
console.log(obj.propertyIsEnumerable("name"));  //true
console.log(obj.propertyIsEnumerable("salary"));  //false


猜你喜欢

转载自blog.csdn.net/hbysj/article/details/80543201