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 相关文章推荐
js string 转 int 注意的问题小结
Aug 15 Javascript
js获取当月最后一天实例代码
Nov 19 Javascript
JavaScript实现网页截图功能
Oct 16 Javascript
javascript实现手机震动API代码
Aug 05 Javascript
JS实现重新加载当前页面
Nov 29 Javascript
JS 中LocalStorage和SessionStorage的使用
Aug 17 Javascript
微信小程序实现添加手机联系人功能示例
Nov 30 Javascript
vue的一个分页组件的示例代码
Dec 25 Javascript
使用node.js实现微信小程序实时聊天功能
Aug 13 Javascript
原生JS实现的放大镜特效示例【测试可用】
Dec 08 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
Sep 20 Javascript
layer.open组件获取弹出层页面变量、函数的实例
Sep 25 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入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
ppk谈JavaScript style属性
2008/10/10 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
详解PyCharm配置Anaconda的艰难心路历程
2018/08/13 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
详解用python生成随机数的几种方法
2019/08/04 Python
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
建筑设计所实习生自我鉴定
2013/09/25 职场文书
本科生学习总结的自我评价
2013/10/02 职场文书
幼儿园园长岗位职责
2013/11/26 职场文书
会计工作心得体会
2014/01/13 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
大学军训感言300字
2014/03/09 职场文书
表扬稿范文
2015/01/17 职场文书
简单的辞职信模板
2015/05/12 职场文书
征求意见函
2015/06/05 职场文书
服装店员工管理制度
2015/08/07 职场文书
PHP命令行与定时任务
2021/04/01 PHP
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android