• 售前

  • 售后

热门帖子
入门百科

JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法

[复制链接]
升密示 显示全部楼层 发表于 2021-10-25 20:06:00 |阅读模式 打印 上一主题 下一主题
JavaScript hasOwnProperty() 方法是 Object 的原型方法(也称实例方法),它定义在 Object.prototype 对象之上,全部 Object 的实例对象都会继承 hasOwnProperty() 方法。
hasOwnProperty() 方法用来检测一个属性是否是对象的自有属性,而不是从原型链继承的。如果该属性是自有属性,那么返回 true,否则返回 false。换句话说,hasOwnProperty() 方法不会检测对象的原型链,只会检测当前对象自己,只有当前对象自己存在该属性时才返回 true。
比方,在下面自定义类型中,this.name 就表现对象的自有属性,而原型对象中的 name 属性就是继承属性。
  1. function F() { //自定义数据类型
  2.   this.name = "自有属性";
  3. }
  4. F.prototype.name = "继承属性";
复制代码
hasOwnProperty() 的语法格式如下:
  1. object.hasOwnProperty(propertyName);
复制代码
参数说明:propertyName 参数表现要检测的属性名称。
返回值:返回一个布尔值。如果 propertyName 是自有属性,那么返回 true,否则返回 false。

示例1

针对上面的自定义类型,可以实例化对象,然后判断当前对象调用的属性 name 是什么类型。
  1. var f = new F(); //实例化对象
  2. console.log(f.hasOwnProperty("name")); //返回true,说明当前调用的 name是自有属性
  3. console.log(f.name); //返回字符串“自有属性”
复制代码
凡是构造函数的原型属性(原型对象包含的属性),都是继承属性,利用 hasOwnProperty() 方法检测时,都会返回 false。但是,对于原型对象自己来说,这些原型属性又是原型对象的自有属性,以是返回值又是 true。

示例2

在下面示例中,演示了 toString() 方法对于 Date 对象来说是继承属性,但是对于 Date 构造函数的原型对象来说,则是它的自有属性。
  1. var d = Date;
  2. console.log(d.hasOwnProperty("toString")); //返回false,说明toString()是Date的自有属性
  3. var d = Date.prototype;
  4. console.log(d.hasOwnProperty("toString")); //返回true,说明toString()是Date.prototype属性
复制代码
hasOwnProperty() 方法只能判断指定对象中是否包含指定名称的属性,无法查抄对象原型链中是否包含某个属性,以是能够检测出来的属性必须是对象成员。

示例3

下面示例演示了 hasOwnProperty() 方法所能检测的属性范围。
  1. var o = { //对象直接量
  2.   o1 : { //子对象直接量
  3.     o2 : { //孙子对象直接量
  4.       name : 1 //孙子对象直接量的属性
  5.     }
  6.   }
  7. };
  8. console.log(o.hasOwnProperty("o1")); //返回true,说明o1是o的自有属性
  9. console.log(o.hasOwnProperty("o2")); //返回false,说明o2不是o的自有属性
  10. console.log(o.o1.hasOwnProperty("o2")); //返回true,说明o2是o1的自有属性
  11. console.log(o.o1.hasOwnProperty("name")); //返回false,说明name不是o1的自有属性
  12. console.log(o.o1.hasOwnProperty("name")); //返回true,说明name不是o2的自有属性
复制代码
到此这篇关于JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法的文章就先容到这了,更多相干JS hasOwnProperty 内容请搜索草根技能分享从前的文章或继承浏览下面的相干文章希望各人以后多多支持草根技能分享!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作