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 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
javascript预览上传图片发现的问题的解决方法
Nov 25 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
Aug 22 Javascript
12行javascript代码绘制一个八卦图
Apr 02 Javascript
微信小程序开发教程-手势解锁实例
Jan 06 Javascript
ES6数组的扩展详解
Apr 25 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
vue如何从接口请求数据
Jun 22 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
Nov 28 Javascript
基于vue实现一个神奇的动态按钮效果
May 15 Javascript
js常见遍历操作小结
Jun 06 Javascript
vue实现倒计时获取验证码效果
Apr 17 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调用API接口实现天气查询功能的示例
2017/09/21 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
JavaScript入门教程(5) js Screen屏幕对象
2009/01/31 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
vue实现通讯录功能
2018/07/14 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
urllib2自定义opener详解
2014/02/07 Python
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
python制作一个桌面便签软件
2015/08/09 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
Python 加密与解密小结
2018/12/06 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
东南亚地区最大的购物网站Lazada新加坡站点:Lazada.sg
2016/07/17 全球购物
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
Nike俄罗斯官方网站:Nike RU
2021/03/05 全球购物
学生个人自我鉴定范文
2014/03/28 职场文书
考核工作实施方案
2014/03/30 职场文书
大学自主招生推荐信
2014/05/10 职场文书
大学英语专业求职信
2014/06/21 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
2015年教研工作总结
2015/05/23 职场文书
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL