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常用函数 不错
Sep 08 Javascript
js模拟弹出效果代码修正版
Aug 07 Javascript
Javascript 定时器调用传递参数的方法
Nov 12 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
Jun 24 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
Nov 25 Javascript
jQuery中ajax的load()方法用法实例
Dec 26 Javascript
JavaScript学习笔记之Cookie对象
Jan 22 Javascript
jquery表单插件Autotab使用方法详解
Jun 24 Javascript
js实现手机拍照上传功能
Jan 17 Javascript
javascript回调函数的概念理解与用法分析
May 27 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
Dec 24 Javascript
vue 引用自定义ttf、otf、在线字体的方法
May 09 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 简单数组排序实现代码
2009/08/05 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
PHP生成自定义长度随机字符串的函数分享
2014/05/04 PHP
给ECShop添加最新评论
2015/01/07 PHP
php写app用的框架整理
2019/09/29 PHP
50个比较实用jQuery代码段
2011/09/18 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
小程序实现带年月选取效果的日历
2018/06/27 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
python如何删除文件中重复的字段
2019/07/16 Python
django Admin文档生成器使用详解
2019/07/22 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
python实现IOU计算案例
2020/04/12 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
办公室秘书自我鉴定
2014/01/18 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
小学记事作文之200字
2019/08/06 职场文书
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS