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 text,radio,checkbox,select操作实现代码
Jul 09 Javascript
javascript 处理HTML元素必须避免使用的一种方法
Jul 30 Javascript
javascript模拟的Ping效果代码 (Web Ping)
Mar 13 Javascript
javaScript(JS)替换节点实现思路介绍
Apr 17 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
Aug 14 Javascript
用javascript替换URL中的参数值示例代码
Jan 27 Javascript
js定义类的几种方法(推荐)
Jun 08 Javascript
浅谈js数组和splice的用法
Dec 04 Javascript
jQuery中的on与bind绑定事件区别实例详解
Feb 28 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 jQuery
Vue利用Blob下载原生二进制数组文件
Sep 25 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
Feb 27 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
自己前几天写的无限分类类
2007/02/14 PHP
几个php应用技巧
2008/03/27 PHP
PHP中extract()函数的定义和用法
2012/08/17 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
addRule在firefox下的兼容写法
2006/11/30 Javascript
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
js 幻灯片的实现
2011/12/06 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
Python多线程编程(一):threading模块综述
2015/04/05 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
python3 mmh3安装及使用方法
2019/10/09 Python
美国鲜花递送:UrbanStems
2021/01/04 全球购物
《晏子使楚》教学反思
2014/02/08 职场文书
倡议书的写法
2014/08/30 职场文书
学雷锋日活动总结
2015/02/06 职场文书
病危通知单
2015/04/17 职场文书
中学总务处工作总结
2015/08/12 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书