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 相关文章推荐
JavaScript库 开发规则
Jan 31 Javascript
jquery如何把参数列严格转换成数组实现思路
Apr 01 Javascript
js网页实时倒计时精确到秒级
Feb 10 Javascript
JavaScript的21条基本知识点
Mar 04 Javascript
jquery中获得元素尺寸和坐标的方法整理
May 18 Javascript
网页右下角弹出窗体实现代码
Jun 05 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
Jun 01 Javascript
BootStrap Typeahead自动补全插件实例代码
Aug 10 Javascript
JavaScript中push(),join() 函数 实例详解
Sep 06 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
Oct 14 Javascript
兼容浏览器的js事件绑定函数(详解)
May 09 Javascript
解决Mac安装thrift因bison报错的问题
May 17 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
Zend Framework分发器用法示例
2016/12/11 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
详解Vue取消eslint语法限制
2018/08/04 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
2019/08/26 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
python二叉树的实现实例
2013/11/21 Python
Python Deque 模块使用详解
2014/07/04 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
Python子类继承父类构造函数详解
2019/02/19 Python
详解Python中的内建函数,可迭代对象,迭代器
2019/04/29 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
把富文本的回车转为br标签
2019/08/09 HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
消防安全管理制度
2014/02/01 职场文书
企业总经理任命书
2014/06/05 职场文书
自查自纠整改报告
2014/11/06 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
2015年工商所工作总结
2015/05/21 职场文书
民间借贷被告代理词
2015/05/23 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python