暂时不考虑ES6中symbol,hasOwnProperty()方法返回的是一个对象上是否包含一个指定属性,如果含有则返回true,如果没有则返回false。
 
和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。这一特性尝尝用来检测一个对象上是否包含自身拥有的属性,并且不是从原型链上继承而来的。

如:
o = new Object();
o.prop = 'exists'; function changeO() {
o.newprop = o.prop;
delete o.prop;
} o.hasOwnProperty('prop'); // 返回 true
changeO();
o.hasOwnProperty('prop'); // 返回 false
来源: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

  

但有时候会出现这样的情况,自己封装的对象中包含同名的hasOwnProperty方法,这时候如果调用的话会直接使用自己封装的方法,为了避免这样的情况发生,使用下列的方式来避免这种情况:

 
var foo = {
hasOwnProperty: function() {
return false;
},
bar: 'Here be dragons'
}; foo.hasOwnProperty('bar'); // 始终返回 false // 如果担心这种情况,可以直接使用原型链上真正的 hasOwnProperty 方法
({}).hasOwnProperty.call(foo, 'bar'); // true // 也可以使用 Object 原型上的 hasOwnProperty 属性
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true

  

常用的使用方式为:
for (var i in man) {
if (man.hasOwnProperty(i)) { // 过滤
console.log(i, ":", man[i]);
}
}

最新文章

  1. C++继承,多重继承,虚继承的构造函数以及析构函数的调用顺序问题
  2. Error in notifier
  3. iOS开发 字符串MD5加密
  4. 二、IRIG_B解码AC信号
  5. 两个字符串,若为数字则都相加,若有一个不为数字则,输出error
  6. Jquery对select的操作(附日历天数变化代码)
  7. 二维小波包重构wprec2\wprcoef
  8. Redis学习-发布/订阅
  9. C语言函数-strcat
  10. linux关于软件安装的博文
  11. jmeter向ActiveMQ发送消息_广播/订阅(Topics 队列)
  12. Jenkins结合.net平台工具之Nuget
  13. SAP查询TABLE对应的文本表
  14. Centos6.6下编译安装Apache2.2.31
  15. CHAPTER 24 History of Our Planet 第24章 我们行星的历史
  16. extjs获取选中列表!
  17. [SpringBoot] - 了解什么是SpringBoot,使用SpringBoot的配置文件
  18. .net web 应用程序C#
  19. 五十九 数据库访问 使用MySQL
  20. 浅谈windows.onload()与$(document).ready()

热门文章

  1. InnoDB还是MyISAM?
  2. 使用DOS批处理更改IP地址
  3. JAVA SE collection接口
  4. Kindeditor单独调用单图上传增加预览
  5. 移动web基础
  6. SQL Server2005修改计算机名后不能发布订阅
  7. Git学习笔记day01 从GitHub克隆版本库
  8. SQLServer:执行计划
  9. org.springframework.beans.factory.BeanNotOfRequiredTypeException
  10. Spring Boot入门程序-STS