IE 5.5+、FireFox、Chrome、Safari、Opera等主流浏览器均支持该函数。

Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性。可以用于区分自身属性和继承属性,如下

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

解决办法如上通过call方法调用原型链上的hasOwnProperty()方法

学习网址:http://www.cnblogs.com/weiqinl/p/8683207.html

js属性对象的hasOwnProperty方法相关推荐

  1. js【Object.prototype.hasOwnProperty()方法】

    2019独角兽企业重金招聘Python工程师标准>>> 概述 hasOwnProperty() 方法用来判断某个对象是否含有指定的自身属性. 语法 obj.hasOwnPropert ...

  2. 161227、js显示对象所有属性和方法的函数

    要想看到实际效果,可以先声明一些属性跟方法,否则是看不到,仔细往下看有例子的. function ShowObjProperty(Obj) { var PropertyList=''; var Pro ...

  3. 遍历对象属性_细说JS遍历对象属性的N种方法

    本人详细介绍了JS遍历对象N种方法,欢迎关注收藏. 遍历对象属性有五种方法,下图为一个场景对比图. 可以注意到两点: 只有for ... in 才可以遍历原型链属性,且只能遍历可枚举属性. Objec ...

  4. js 改写对象转字符串 字符串转对象(不丢失对象方法)

    js 改写对象(包括方法)转字符串 对象转字符串 字符串转对象 总结 js中将对象转化为字符串可以用JSON.stringify,字符串转对象可以用JSON.parse.这两个方法在大部分的情况下都很 ...

  5. Js对象如何添加方法、查看Api

    js万物皆对象,要带着观察对象的眼观去看待每一个函数.变量. 为什么要用到原型? Es6以前,js中没有如ooa编程当中的class,但是要用到类,怎么办呢,构造函数就应运而生,但是构造函数里面添加方 ...

  6. 从非数组对象转数组方法小结

    Array.prototype.slice.call(obj) 该方法可以将类数组对象转换为数组,所谓类数组对象,就是含 length 和索引属性的对象 返回的数组长度取决于对象 length 属性的 ...

  7. JSPatch实现原理详解:让JS调用/替换任意OC方法

    JSPatch实现原理详解:让JS调用/替换任意OC方法 2015-07-10 09:05 编辑: suiling 分类:iOS开发 来源:bang JSPatch以小巧的体积做到了让JS调用/替换任 ...

  8. js之删除对象属性的三种方法 判断对象中是否有某一属性的四种方法

    js之删除对象属性的三种方法 & 判断对象中是否有某一属性的四种方法 示例 1.基础版 var a = { id: 18, age: 20, name: "zhangsan" ...

  9. js入门·对象属性方法大总结

    数组(Array):系列元素的有序集合: 详细演示请看:[js入门系列演示·数组 ] http://www.cnblogs.com/thcjp/archive/2006/08/04/467761.ht ...

最新文章

  1. 人群分析综述--Crowd Scene Understanding from Video: A Survey
  2. 从ACT-R探讨认知智能
  3. mysql 设置表的大小_mysql InnoDB建表时设定初始大小的方法
  4. Office中如何实现公式颜色的更改?
  5. python输出中文加数字_python处理“#”开头加数字的html字符方法
  6. 《JavaScript设计模式与开发实践》读书笔记之观察者模式
  7. 深入理解JavaScript定时函数setTimeout
  8. 大数据|意不意外?今年卖得最好的月饼是这个馅的……
  9. 会议交流 | DataFunCon 线上大会 - 知识图谱专题论坛
  10. 固态硬盘ps3111开卡工具_固态硬盘必备工具:系统无损迁移、僵尸文件立现原形...
  11. FPGA学习笔记---Modelsim使用技巧总结
  12. 分布式事务框架 - Seata
  13. 利用VMware Infrastructure SDK编程控制虚拟机集群(2)
  14. 无需越狱手机,下载越狱版本IPA的方法
  15. Spring Cloud Alibaba Sentinel之服务降级篇
  16. Android腾讯微博开放平台入门(四)发表一条文字微博
  17. Hspice中的测量语句(II)
  18. WhereDidMyTimeGo - 一款帮你记录每天的时间分配的MacOS app
  19. 金融投资理财基础知识
  20. vue 引入萤石视频

热门文章

  1. mysql连接idea详细教程_idea配置连接数据库的超详细步骤
  2. win10计算器rsh_Win10 内置计算器评测:PowerShell 很靠谱
  3. 怎样查找html概念,HTML一般概念_html
  4. datatable中某一列最小值_Asp.net中获取DataTable选择第一行某一列值
  5. 提取多个字段_动态合并多个工作表,数据再多也不怕
  6. [转载] Python3 数组
  7. oracle清理告警日志,Oracle 跟踪/告警/监听日志的清理脚本
  8. 内部导线拉力测试_珠海后环回收试验机现金支付拉力试验机回收和谐温馨的环境...
  9. Java枚举getDeclaringClass()方法与示例
  10. C# Winform 窗体美化(十、自定义窗体)