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 相关文章推荐
初学prototype,发个JS接受URL参数的代码
Sep 25 Javascript
利用XMLHTTP传递参数在另一页面执行并刷新本页
Oct 26 Javascript
JavaScript的parseInt 进制问题
May 07 Javascript
Mootools 1.2教程 Tooltips
Sep 15 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
Apr 21 Javascript
JavaScript中数据结构与算法(一):栈
Jun 19 Javascript
JavaScript中的数据类型转换方法小结
Oct 26 Javascript
javascript实现保留两位小数的多种方法
Dec 18 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
Dec 24 Javascript
使用jquery.qrcode.js生成二维码插件
Oct 17 Javascript
AngularJS过滤器filter用法总结
Dec 13 Javascript
记一次vue跨域的解决
Oct 21 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实现插入排序?
2013/04/10 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
php将html转为图片的实现方法
2017/05/19 PHP
半角全角相互转换的js函数
2009/10/16 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
BootStrap 动态表单效果
2017/06/02 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
python关键字and和or用法实例
2015/05/28 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python requests证书问题解决
2019/09/05 Python
Django框架表单操作实例分析
2019/11/04 Python
用python制作个视频下载器
2021/02/01 Python
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
关心下一代工作先进事迹
2014/08/15 职场文书
个人授权委托书范文
2014/09/21 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
外国人来华邀请函
2015/01/31 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
使用Redis做预定库存缓存功能
2022/04/02 Redis