博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript hasOwnProperty 函数
阅读量:6858 次
发布时间:2019-06-26

本文共 879 字,大约阅读时间需要 2 分钟。

 

为了判断一个对象是否包含自定义属性而不是上的属性,

我们需要使用继承自 Object.prototype 的 hasOwnProperty 方法。

注意: 通过判断一个属性是否 undefined 是不够的。

因为一个属性可能确实存在,只不过它的值被设置为 undefined。

hasOwnProperty 是 JavaScript 中唯一一个处理属性但是查找原型链的函数。

// 修改Object.prototypeObject.prototype.bar = 1; var foo = {goo: undefined};foo.bar; // 1'bar' in foo; // truefoo.hasOwnProperty('bar'); // falsefoo.hasOwnProperty('goo'); // true

只有 hasOwnProperty 可以给出正确和期望的结果,这在遍历对象的属性时会很有用。

没有其它方法可以用来排除原型链上的属性,而不是定义在对象自身上的属性。

hasOwnProperty 作为属性

JavaScript 不会保护 hasOwnProperty 被非法占用,因此如果一个对象碰巧存在这个属性,

就需要使用外部的 hasOwnProperty 函数来获取正确的结果。

var foo = {    hasOwnProperty: function() {        return false;    },    bar: 'Here be dragons'};foo.hasOwnProperty('bar'); // 总是返回 false// 使用其它对象的 hasOwnProperty,并将其上下为设置为foo{}.hasOwnProperty.call(foo, 'bar'); // true

结论

当检查对象上某个属性是否存在时,hasOwnProperty 是唯一可用的方法。

同时在使用  遍历对象时,推荐总是使用 hasOwnProperty 方法,
这将会避免对象扩展带来的干扰。

转载地址:http://bpjyl.baihongyu.com/

你可能感兴趣的文章
SQL Server中的临时表
查看>>
SAP MM Transportation of PR Release Strategy with Classification
查看>>
RSD和wlwmanifest是什么
查看>>
git 常用命令及问题解决(转)
查看>>
痛点无法解决 早餐始终上不了互联网台面
查看>>
UserMapper.selectByPrimaryKey-Inline 报错的解决办法
查看>>
【Win10应用开发】自适应磁贴中的分组
查看>>
[20170703]11g增加字段与查询条件的变化
查看>>
mysql配置参数优化
查看>>
微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台
查看>>
Swing中弹出对话框的几种方式(转)
查看>>
人工智能时代的工作、学习和生活---《人工智能》阅读笔记
查看>>
linux下使用 du查看某个文件或目录占用磁盘空间的大小
查看>>
将 Intent 序列化,像 Uri 一样传递 Intent!
查看>>
UWP开发入门(十五)——在FlipView中通过手势操作图片
查看>>
Python——set
查看>>
PhxPaxos源码分析——网络
查看>>
SharePoint Error - The SharePoint server was moved to a different location.
查看>>
十款绝bi好用的硬盘数据恢复软件值得拥有简易恢复
查看>>
写给设计师的字偶距调整指南
查看>>