2019独角兽企业重金招聘Python工程师标准>>>

概述

hasOwnProperty() 方法用来判断某个对象是否含有指定的自身属性。

语法

obj.hasOwnProperty(prop)

参数

  • prop

  • 要检测的属性名称。

描述

所有继承了 Object.prototype 的对象都会从原型链上继承到 hasOwnProperty 方法,这个方法可以用来检测一个对象是否含有特定的自身属性,和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。

示例

例1:使用 hasOwnProperty 方法判断某对象是否含有特定的自身属性

下面的例子检测了对象 o 是否含有自身属性 prop:

o = new Object();o.prop = 'exists';function changeO() {o.newprop = o.prop;delete o.prop;}o.hasOwnProperty('prop');   // 返回 truechangeO();o.hasOwnProperty('prop');  // 返回 false

例2:自身属性和继承属性的区别

下面的例子演示了 hasOwnProperty 方法对待自身属性和继承属性的区别:

o = new Object();o.prop = 'exists';o.hasOwnProperty('prop');            // 返回 trueo.hasOwnProperty('toString');         // 返回 falseo.hasOwnProperty('hasOwnProperty');   // 返回 false

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

下面的例子演示了如何在遍历一个对象的所有属性时忽略掉继承属性,注意这里 for..in 循环只会遍历可枚举属性,这通常就是我们想要的,直接使用 Object.getOwnPropertyNames() 方法也可以实现类似的需求。

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    }}

例4: hasOwnProperty 方法有可能被遮蔽

如果一个对象拥有自己的 hasOwnProperty 方法, 则原型链上的同名方法会被遮蔽(shadowed):

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

转载于:https://my.oschina.net/anna153/blog/383272

js【Object.prototype.hasOwnProperty()方法】相关推荐

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

    hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性 例如:obj.hasOwnProperty(prop) 1. 所有 Object 的对象都会有 hasOw ...

  2. Why Object.prototype.hasOwnProperty.call(myObj, prop)

    为什么使用 Object.prototype.hasOwnProperty.call(myObj, prop) 而不是 myObj.hasOwnProperty(prop)? 标题太长了,掘金貌似不能 ...

  3. Object.prototype.hasOwnProperty()

    hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键). 描述 所有继承了 Object 的对象都会继承到 hasOwnProperty ...

  4. JavaScript中Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. <一>, ECMAScript 3  1. 在E ...

  5. JavaScript:Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Obje ...

  6. ECMA262 Edition5 Object,Object的属性和方法,Object.prototype的方法.

    ES5,为Object添加了一批方法.了解这些方法,可以更好的理解属性描述符的应用. 所以还是很有必要读一读的.另外,这些方法用起来还是蛮给力的. 暂时对于ES5,就只放出这些吧,希望对大家有所帮助. ...

  7. 遍历JS Object的方法

    遍历JS Object的方法 1.Object.keys 2. for in 1.Object.keys const body = {hot: false,id: 5,news: true,topic ...

  8. js属性对象的hasOwnProperty方法

    IE 5.5+.FireFox.Chrome.Safari.Opera等主流浏览器均支持该函数. Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承) ...

  9. 由Object.prototype.toString.call( )引发关于toString( )方法的思考

    引言 前端面试中有这么一道经典的问题,如何判断一个对象是否为数组? ES5提供了一个确定对象是否为数组的函数 Array.isArray(object); 复制代码 其中,object是必须的,表示要 ...

最新文章

  1. EBioMedicine:西湖大学郑钜圣组-乳制品摄入与肠道微生态、心血管代谢健康的关系...
  2. linux 脚本编程
  3. iOS开源项目周报0316
  4. FPL 2017最佳论文:如何对FPGA云发动DoS攻击?
  5. .Net Core3.0 配置Configuration
  6. opendrive道路标准基础知识
  7. font-family 字体及各大主流网站对比
  8. python判断素数的函数_python判断素数的方法
  9. 【计算机网络】数字签名和数字认证
  10. redis集群节点宕机
  11. [高项]消极风险VS积极风险
  12. 物理机安装Ubuntu
  13. linux进程创建心得体会,Linux系统下计算机C语言编程心得体会
  14. 鸢尾花分类(主成分分析)
  15. Perl脚本语言(一)
  16. 基于C语言的网络电子词典
  17. 【GUI应用】Matlab实现矩阵计算器
  18. 【矩阵乘法】JZOJ_4787 数格子
  19. 计算机网络:网络安全(网络安全概述)
  20. 万字 Java 知识地图助你成为 Offer 收割机

热门文章

  1. 安装erlang没有bin文件夹_Windows10有关jdk13.0.1的详细安装过程
  2. 9. 设计二个函数分别计算sinx和cosx_Excel技巧篇(一):超级好用的几个函数
  3. 树莓派python开发教程_树莓派Raspberry开发从基础到进阶视频+设计资料超详细教程下载...
  4. 红包随机分配问题php,自己写仿微信红包的随机分配,为什么平均数差距这么大?...
  5. git切换分支出现head is now at_git寻根——^和~的区别
  6. 正则邮箱_正则表达式再进级
  7. 添加组件_苹果ios14怎么添加删除小组件 小组件叠放添加设置教程
  8. mq 2085 java_websphere mq 不能访问集群中其它节点对列
  9. 压力测试和负载测试区别_性能测试vs压力测试vs负载测试
  10. jetty java 实例_java 在Jetty9中使用HttpSessionListener和Filter实例详解