js属性对象的hasOwnProperty方法

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

判断自身属性是否存在

varo =newObject();o.prop ='exists';functionchangeO(){  o.newprop = o.prop;deleteo.prop;}o.hasOwnProperty('prop');// truechangeO();o.hasOwnProperty('prop');// false

判断自身属性与继承属性

functionfoo(){this.name ='foo'this.sayHi =function(){console.log('Say Hi')  }}foo.prototype.sayGoodBy =function(){console.log('Say Good By')}letmyPro =newfoo()console.log(myPro.name)// fooconsole.log(myPro.hasOwnProperty('name'))// trueconsole.log(myPro.hasOwnProperty('toString'))// falseconsole.log(myPro.hasOwnProperty('hasOwnProperty'))// fasleconsole.log(myPro.hasOwnProperty('sayHi'))// trueconsole.log(myPro.hasOwnProperty('sayGoodBy'))// falseconsole.log('sayGoodBy'inmyPro)// true

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

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

varbuz = {fog:'stack'};for(varnameinbuz) {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方法来获取正确的结果:

varfoo = {hasOwnProperty:function(){returnfalse;    },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

原文 https://www.cnblogs.com/weiqinl/p/8683207.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2018年7月16日----2018年7月21日 本周检视如下: 1、晨间日记坚持的不错,效果还没有很明显,继续坚...
    当下的微笑阅读 1,265评论 0 0
  • A:瘫了一天,不想动,不想整理家务。 M:就想坐着看玩玩手机看看电视,别说整理家务,游戏都不想去玩了,感觉没有能量...
    Aminge阅读 1,225评论 0 0
  • 罗兰说:“个人有个人理想的乐园,有自己所乐于安享的世界,朝自己所乐于追求的方向去追求,就是你一生的道路,...
    教育谭阅读 2,507评论 0 1
  • 约五六岁,我把罐头🥫吃光了,在村里打谷场听评书,就把嘴巴放进罐头瓶口吸残渣,可能吸的太久了,嘴巴就乌紫滥青的黑了一...
    有位浪人阅读 1,652评论 0 0

友情链接更多精彩内容