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 Memoization 让函数也有记忆功能
Oct 27 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
Feb 07 Javascript
webpack+vue.js快速入门教程
Oct 12 Javascript
利用jquery实现下拉框的禁用与启用
Dec 07 Javascript
Angular2使用Angular CLI快速搭建工程(一)
May 21 Javascript
vue component组件使用方法详解
Jul 14 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
Nov 27 Javascript
vue实现动态列表点击各行换色的方法
Sep 13 Javascript
微信小程序实现页面浮动导航
Jan 08 Javascript
webpack 动态批量加载文件的实现方法
Mar 19 Javascript
小谈angular ng deploy的实现
Apr 07 Javascript
JavaScript实现与web通信的方法详解
Aug 07 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实现的美国50个州选择列表实例
2015/04/20 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
js防止表单重复提交的两种方法
2013/09/30 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
科长竞争上岗演讲稿
2014/05/12 职场文书
医院搬迁方案
2014/06/14 职场文书
个人授权委托书格式
2014/08/30 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
护理医院见习报告
2014/11/03 职场文书
2014年妇联工作总结
2014/11/21 职场文书
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL