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 innerHTML 的一些问题的解决方法
Jun 22 Javascript
javascript json 新手入门文档
Dec 03 Javascript
JavaScript 面向对象之命名空间
May 04 Javascript
node在两个div之间移动,用ztree实现
Mar 06 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
Apr 26 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
Aug 03 Javascript
jquery+css3打造一款ajax分页插件(自写)
Jun 18 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
Mar 13 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
Jun 13 Javascript
JavaScript 预解析的4种实现方法解析
Sep 03 Javascript
使用p5.js临摹动态图形
Oct 23 Javascript
layui实现form表单同时提交数据和文件的代码
Oct 25 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
ThinkPHP模板中数组循环实例
2014/10/30 PHP
PHP多线程类及用法实例
2014/12/03 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
php通过各种函数判断0和空
2020/07/04 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
jquery trim() 功能源代码
2011/02/14 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
2016/05/12 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
js实现开关灯效果
2020/03/30 Javascript
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
python协程用法实例分析
2015/06/04 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
演讲稿怎么写才完美
2014/01/02 职场文书
信访工作者先进事迹
2014/01/17 职场文书
组工干部演讲稿
2014/09/02 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
关于学习的决心书
2015/02/05 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA
2022漫威和DC电影上映作品
2022/04/05 欧美动漫
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers