JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
JavaScripthasOwnProperty()方法是Object的原型方法(也称实例方法),它定义在Object.prototype对象之上,所有Object的实例对象都会继承hasOwnProperty()方法。
hasOwnProperty()方法用来检测一个属性是否是对象的自有属性,而不是从原型链继承的。如果该属性是自有属性,那么返回true,否则返回false。换句话说,hasOwnProperty()方法不会检测对象的原型链,只会检测当前对象本身,只有当前对象本身存在该属性时才返回true。
例如,在下面自定义类型中,this.name就表示对象的自有属性,而原型对象中的name属性就是继承属性。
functionF(){//自定义数据类型 this.name="自有属性"; } F.prototype.name="继承属性";
hasOwnProperty()的语法格式如下:
object.hasOwnProperty(propertyName);
参数说明:propertyName参数表示要检测的属性名称。
返回值:返回一个布尔值。如果propertyName是自有属性,那么返回true,否则返回false。
示例1
针对上面的自定义类型,可以实例化对象,然后判定当前对象调用的属性name是什么类型。
varf=newF();//实例化对象 console.log(f.hasOwnProperty("name"));//返回true,说明当前调用的name是自有属性 console.log(f.name);//返回字符串“自有属性”
凡是构造函数的原型属性(原型对象包含的属性),都是继承属性,使用hasOwnProperty()方法检测时,都会返回false。但是,对于原型对象本身来说,这些原型属性又是原型对象的自有属性,所以返回值又是true。
示例2
在下面示例中,演示了toString()方法对于Date对象来说是继承属性,但是对于Date构造函数的原型对象来说,则是它的自有属性。
vard=Date; console.log(d.hasOwnProperty("toString"));//返回false,说明toString()是Date的自有属性 vard=Date.prototype; console.log(d.hasOwnProperty("toString"));//返回true,说明toString()是Date.prototype属性
hasOwnProperty()方法只能判断指定对象中是否包含指定名称的属性,无法检查对象原型链中是否包含某个属性,所以能够检测出来的属性必须是对象成员。
示例3
下面示例演示了hasOwnProperty()方法所能检测的属性范围。
varo={//对象直接量 o1:{//子对象直接量 o2:{//孙子对象直接量 name:1//孙子对象直接量的属性 } } }; console.log(o.hasOwnProperty("o1"));//返回true,说明o1是o的自有属性 console.log(o.hasOwnProperty("o2"));//返回false,说明o2不是o的自有属性 console.log(o.o1.hasOwnProperty("o2"));//返回true,说明o2是o1的自有属性 console.log(o.o1.hasOwnProperty("name"));//返回false,说明name不是o1的自有属性 console.log(o.o1.hasOwnProperty("name"));//返回true,说明name不是o2的自有属性
到此这篇关于JShasOwnProperty()方法检测一个属性是否是对象的自有属性的方法的文章就介绍到这了,更多相关JShasOwnProperty内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!