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


Posted in Javascript onJanuary 29, 2021

JavaScript hasOwnProperty() 方法是 Object 的原型方法(也称实例方法),它定义在 Object.prototype 对象之上,所有 Object 的实例对象都会继承 hasOwnProperty() 方法。

hasOwnProperty() 方法用来检测一个属性是否是对象的自有属性,而不是从原型链继承的。如果该属性是自有属性,那么返回 true,否则返回 false。换句话说,hasOwnProperty() 方法不会检测对象的原型链,只会检测当前对象本身,只有当前对象本身存在该属性时才返回 true。

例如,在下面自定义类型中,this.name 就表示对象的自有属性,而原型对象中的 name 属性就是继承属性。

function F() { //自定义数据类型
  this.name = "自有属性";
}
F.prototype.name = "继承属性";

hasOwnProperty() 的语法格式如下:

object.hasOwnProperty(propertyName);

参数说明:propertyName 参数表示要检测的属性名称。

返回值:返回一个布尔值。如果 propertyName 是自有属性,那么返回 true,否则返回 false。

示例1

针对上面的自定义类型,可以实例化对象,然后判定当前对象调用的属性 name 是什么类型。

var f = new F(); //实例化对象
console.log(f.hasOwnProperty("name")); //返回true,说明当前调用的 name是自有属性
console.log(f.name); //返回字符串“自有属性”

凡是构造函数的原型属性(原型对象包含的属性),都是继承属性,使用 hasOwnProperty() 方法检测时,都会返回 false。但是,对于原型对象本身来说,这些原型属性又是原型对象的自有属性,所以返回值又是 true。

示例2

在下面示例中,演示了 toString() 方法对于 Date 对象来说是继承属性,但是对于 Date 构造函数的原型对象来说,则是它的自有属性。

var d = Date;
console.log(d.hasOwnProperty("toString")); //返回false,说明toString()是Date的自有属性
var d = Date.prototype;
console.log(d.hasOwnProperty("toString")); //返回true,说明toString()是Date.prototype属性

hasOwnProperty() 方法只能判断指定对象中是否包含指定名称的属性,无法检查对象原型链中是否包含某个属性,所以能够检测出来的属性必须是对象成员。

示例3

下面示例演示了 hasOwnProperty() 方法所能检测的属性范围。

var o = { //对象直接量
  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的自有属性

到此这篇关于JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法的文章就介绍到这了,更多相关JS hasOwnProperty 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JS对象转换为Jquery对象实现代码
Dec 29 Javascript
常用jQuery代码分享
Jul 14 Javascript
angularjs 源码解析之injector
Aug 22 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
Dec 13 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
Apr 27 Javascript
Vue+Element使用富文本编辑器的示例代码
Aug 14 Javascript
jQuery使用zTree插件实现可拖拽的树示例
Sep 23 jQuery
js实现鼠标拖拽缩放div实例代码
Mar 25 Javascript
Node.js使用supervisor进行开发中调试的方法
Mar 26 Javascript
详解Vue2.5+迁移至Typescript指南
Aug 01 Javascript
微信小程序跨页面传递data数据方法解析
Dec 13 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 Javascript
Javascript实现打鼓效果
Jan 29 #Javascript
JS实现点击掉落特效
Jan 29 #Javascript
Javascript实现关闭广告效果
Jan 29 #Javascript
Vue 实例中使用$refs的注意事项
Jan 29 #Vue.js
vue 项目@change多个参数传值多个事件的操作
Jan 29 #Vue.js
vue 实现click同时传入事件对象和自定义参数
Jan 29 #Vue.js
聊聊vue 中的v-on参数问题
Jan 29 #Vue.js
You might like
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
PHP之header函数详解
2021/03/02 PHP
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
javascript控制台详解
2015/06/25 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
深入理解Django的自定义过滤器
2017/10/17 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
Stella McCartney官网:成衣、包袋、香水、内衣、童装及Adidas系列
2018/12/20 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
英国电子专家:maplin
2019/09/04 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
生产经理的自我评价分享
2013/11/07 职场文书
竟聘演讲稿范文
2013/12/31 职场文书
企业申诉管理制度
2014/01/30 职场文书
新学期开学演讲稿
2014/05/24 职场文书
物业品质提升方案
2014/06/08 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
质量保证书
2015/01/17 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
公司会议开幕词
2016/03/03 职场文书
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android
python如何读取和存储dict()与.json格式文件
2022/06/25 Python