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 相关文章推荐
实现超用户体验 table排序javascript实现代码
Jun 22 Javascript
JS判定是否原生方法
Jul 22 Javascript
jQuery中$.fn的用法示例介绍
Nov 05 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
Sep 01 Javascript
深入理解JQuery中的事件与动画
May 18 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
Jun 17 Javascript
Boostrap实现的登录界面实例代码
Oct 09 Javascript
禁用backspace网页回退功能的实现代码
Nov 15 Javascript
JavaScript之创意时钟项目(实例讲解)
Oct 23 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
Nov 28 Javascript
vue2路由方式--嵌套路由实现方法分析
Mar 06 Javascript
微信小程序实现聊天室
Aug 21 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
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
Laravel5中contracts详解
2015/03/02 PHP
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
Python中防止sql注入的方法详解
2017/02/25 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
pycharm显示远程图片的实现
2019/11/04 Python
基于pandas中expand的作用详解
2019/12/17 Python
利用python 下载bilibili视频
2020/11/13 Python
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
英国领先的办公用品供应商:Viking
2016/08/01 全球购物
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
财务工作个人求职的自我评价
2013/12/19 职场文书
文明宿舍获奖感言
2014/02/07 职场文书
客服专员岗位职责
2014/02/28 职场文书
安全演讲稿大全
2014/05/09 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
财务稽核岗位职责
2015/04/13 职场文书
物业保安辞职信
2015/05/12 职场文书
给校长的建议书范文
2015/09/14 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis
关于MySQL中的 like操作符详情
2021/11/17 MySQL