首页 > 代码库 > javascript ,o检测属性

javascript ,o检测属性

   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


javascript ,o检测属性