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+XMLHttpRequest+asp.net无刷新读取数据库数据
Aug 09 Javascript
node.js中的querystring.parse方法使用说明
Dec 10 Javascript
javascript实现显示和隐藏div方法汇总
Aug 14 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
Jan 11 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
Jan 20 Javascript
video.js使用改变ui过程
Mar 05 Javascript
tween.js缓动补间动画算法示例
Feb 13 Javascript
ios设备中angularjs无法改变页面title的解决方法
Sep 13 Javascript
对angularJs中ng-style动态改变样式的实例讲解
Sep 30 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
Dec 20 Javascript
深入koa-bodyparser原理解析
Jan 16 Javascript
微信小程序实现分享朋友圈的图片功能示例
Jan 18 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转换IP地址到真实地址的方法详解
2013/06/09 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
jquery统计复选框选中示例
2013/11/05 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
详解Vue方法与事件
2017/03/09 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
python实现爬虫下载美女图片
2015/07/14 Python
Python自动扫雷实现方法
2015/07/25 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
python2与python3共存问题的解决方法
2018/09/18 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
大学生家政服务项目创业计划书
2014/01/30 职场文书
商场消防安全责任书
2014/07/29 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js
MySQL数据库之存储过程 procedure
2022/06/16 MySQL
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android