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 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
Nov 26 Javascript
json数据的列循环示例
Sep 06 Javascript
javascript的渐进增强与平稳退化浅谈
Nov 12 Javascript
删除javascript中注释语句的正则表达式
Jun 11 Javascript
jQuery实现移动 和 渐变特效的点击事件
Feb 26 Javascript
浅析javascript中的DOM
Mar 01 Javascript
javascript实现实时输出当前的时间
Apr 27 Javascript
javascript多物体运动实现方法分析
Jan 08 Javascript
Bootstrap开关(switch)控件学习笔记分享
May 30 Javascript
Bootstrap源码解读按钮(5)
Dec 23 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
Apr 18 Javascript
基于element-ui封装表单金额输入框的方法示例
Jan 06 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获取mysql字段名称和其它信息的例子
2014/04/14 PHP
php常量详细解析
2015/10/27 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
python中os操作文件及文件路径实例汇总
2015/01/15 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
基于python实现聊天室程序
2018/07/27 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
轻松制作精彩视频:Animoto
2018/09/19 全球购物
员工自我鉴定范文
2013/10/06 职场文书
英文简历中的自我评价用语
2013/12/09 职场文书
家长会学生家长演讲稿
2013/12/29 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
加入学生会演讲稿
2014/04/24 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
社会实践单位意见
2015/06/05 职场文书
财务管理制度范本
2015/08/04 职场文书
Jsonp劫持学习
2021/04/01 PHP
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS