javascript 属性检测

来源:互联网 发布:java短信接口短信轰炸 编辑:程序博客网 时间:2024/06/07 01:29

概述

javascript对象可以看做属性的集合,我们经常会检测集合中成员的所属关系----判断某个对象是否存在某属性(成员变量或方法)。我们可以通过in运算符,hasOwnPreperty和propertyIsEnumerable()方法来检测。

in运算符

书写格式为:属性(字符串) in 对象。该检测会检测对象自由属性,以及继承属性。

var a={x:''};var x='x' in a; //x=>truevar y='y' in a; //y=>falsevar t='toString' in a; t=>true

a继承自object类并存在自有属性x,所以x=true,y=false。因为所有类继承自object所以a会存在object中的toString方法,所以t=true.

hasOwnProperty方法

书写格式为对象.hasOwnProperty(属性名),其中该方法为in运算符不同,他会将继承属性刨除在外

var a={x:''};var x=a.hasOwnProperty("x"); //x=>truevar y=a.hasOwnProperty("y"); //y=>falsevar t=a.hasOwnProperty("toString"); //t=>false
a继承自object类并存在自有属性x,所以x=true,y=false。因为toString为父类方法,则t返回false

!==undefined

书写可是为 对象.属性!==undefined,但其中也会存在一些局限性,该方法无法区分存在属性但属性值为undefined和不存该属性。

var a={x:undefined};var x1=a.x!==undefined; //x1=>false 属性存在但值为undefinedvar x2="x" in a; //x2=>true 属性存在delete a.x;var x3= 'x' in a;//x3=>false 属性不存在var y1=a.y!==undefined; //y1=>fasle 属性不存在var y2='y' in a; //y2=>false 属性不存在


0 0
原创粉丝点击