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 相关文章推荐
jquery 输入框数字限制插件
Nov 10 Javascript
jquery设置控件位置的方法
Aug 21 Javascript
js调用图片隐藏&显示实现代码
Sep 13 Javascript
javascript遍历控件实例详细解析
Jan 10 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
Jun 05 Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 Javascript
js实现4个方向滚动的球
Mar 06 Javascript
React中阻止事件冒泡的问题详析
Apr 12 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
May 26 Javascript
vue 实现通过vuex 存储值 在不同界面使用
Nov 11 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
Aug 14 Javascript
浅谈克隆 JavaScript
Nov 02 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
Python判断两个对象相等的原理
2017/12/12 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
使用Pycharm分段执行代码
2020/04/15 Python
请介绍一下Ant
2016/07/22 面试题
打架检讨书50字
2014/01/11 职场文书
春节活动策划方案
2014/01/24 职场文书
交警失职检讨书
2015/01/26 职场文书
三下乡个人总结
2015/03/04 职场文书
2016新年慰问信范文
2015/03/25 职场文书
工厂仓库管理员岗位职责
2015/04/09 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
Python中super().__init__()测试以及理解
2021/12/06 Python