js属性对象的hasOwnProperty方法的使用


Posted in Javascript onFebruary 05, 2021

Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性。

判断自身属性是否存在

var o = new Object();
o.prop = 'exists';

function changeO() {
 o.newprop = o.prop;
 delete o.prop;
}

o.hasOwnProperty('prop'); // true
changeO();
o.hasOwnProperty('prop'); // false

判断自身属性与继承属性

function foo() {
 this.name = 'foo'
 this.sayHi = function () {
  console.log('Say Hi')
 }
}

foo.prototype.sayGoodBy = function () {
 console.log('Say Good By')
}

let myPro = new foo()

console.log(myPro.name) // foo
console.log(myPro.hasOwnProperty('name')) // true
console.log(myPro.hasOwnProperty('toString')) // false
console.log(myPro.hasOwnProperty('hasOwnProperty')) // fasle
console.log(myPro.hasOwnProperty('sayHi')) // true
console.log(myPro.hasOwnProperty('sayGoodBy')) // false
console.log('sayGoodBy' in myPro) // true

遍历一个对象的所有自身属性

在看开源项目的过程中,经常会看到类似如下的源码。for...in循环对象的所有枚举属性,然后再使用hasOwnProperty()方法来忽略继承属性。

var buz = {
  fog: 'stack'
};

for (var name in buz) {
  if (buz.hasOwnProperty(name)) {
    alert("this is fog (" + name + ") for sure. Value: " + buz[name]);
  }
  else {
    alert(name); // toString or something else
  }
}

注意 hasOwnProperty 作为属性名

JavaScript 并没有保护 hasOwnProperty 属性名,因此,可能存在于一个包含此属性名的对象,有必要使用一个可扩展的hasOwnProperty方法来获取正确的结果:

var foo = {
  hasOwnProperty: function() {
    return false;
  },
  bar: 'Here be dragons'
};

foo.hasOwnProperty('bar'); // 始终返回 false

// 如果担心这种情况,可以直接使用原型链上真正的 hasOwnProperty 方法
// 使用另一个对象的`hasOwnProperty` 并且call
({}).hasOwnProperty.call(foo, 'bar'); // true

// 也可以使用 Object 原型上的 hasOwnProperty 属性
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true

参考链接

到此这篇关于js属性对象的hasOwnProperty方法的使用的文章就介绍到这了,更多相关js hasOwnProperty内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
Javascript string 扩展库代码
Apr 09 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
Dec 10 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
May 05 Javascript
原生js实现日期联动
Jan 12 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
Jun 03 Javascript
javascript创建含数字字母的随机字符串方法总结
Aug 01 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
Dec 07 Javascript
详解angularjs利用ui-route异步加载组件
May 21 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
Jul 24 Javascript
原生js检测页面加载完毕的实例
Sep 11 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
Sep 25 Javascript
JavaScript JMap类定义与使用方法示例
Jan 22 Javascript
关于element的表单组件整理笔记
Feb 05 #Javascript
详解JavaScript中的this指向问题
Feb 05 #Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
Feb 05 #Javascript
详解javascript脚本何时会被执行
Feb 05 #Javascript
前端如何实现动画过渡效果
Feb 05 #Javascript
原生js拖拽功能制作滑动条实例代码
Feb 05 #Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 #jQuery
You might like
php购物网站支付paypal使用方法
2010/11/28 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
Javascript 继承实现例子
2009/08/12 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
javascript数组排序汇总
2015/07/07 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
2015/12/08 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
python获取从命令行输入数字的方法
2015/04/29 Python
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
python安装sklearn模块的方法详解
2020/11/28 Python
Python将QQ聊天记录生成词云的示例代码
2021/02/10 Python
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
旅游专业职业生涯规划范文
2014/01/13 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
金融与证券专业求职信
2014/06/22 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
团委副书记工作总结
2015/08/14 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL