javascript 对象可以看作是属性的集合,我们经常会检测集合中成员中所属关系,判断属性是否在这个对象中,那么我们可以通过in, hasOwnProperty(),propertyIsEnumerable()
等方法。下面分别介绍这些方法:
一、in 检测属性是否属于该对象。
in 运算符左侧是属性名,右侧是对象,如果对象的继承属性或自有属性包括这个属性则返回true:如下
var o={x:1};
"x " in o //true x 是 o 的属性
“toString" in o // true o 继承 toString 属性
二 hasOwnProperty()方法用来检测给定的名字是否是对象的自由属性。对于继承属性返回false 例子
var o={x:1};
o.hasOwnProperty("x") //true :o 有一个自由属性x
o.hasOwnproperty("toString); //false toString 是继承属性:
三、propertyIsEnumerable()是hasOwnProperty()增强版,不仅要检验是对象的自由属性,还要检验该属性,是否可枚举。如下
var o={x:1};
o.propertyIsEnumerable(x) // true ,x 是o的自由属性,且可以枚举
Object.property.propertyIsEnumerable("toStirng") //false 不可枚举
你
以上除了使用in运算符外,更简单的方法使用“!==” 判断属性是否 undefined 的属性,如下代码:
var o={x:1};
o.x!==undefined //true o 中有属性x
o.toString!==undefined //true o 中有继承属性 toString
但是有一种情况只能使用in 运算符 而不能使用上面的方式
如下:
var o={x:undefined};
o.x!==undefined //false 属性存在 但值为undefined
"x" in o // true 存在属性x
时间: 2024-10-16 02:22:08