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 相关文章推荐
Jquery 扩展方法
May 06 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
Jan 23 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
May 03 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
May 10 Javascript
微信小程序 scroll-view组件实现列表页实例代码
Dec 14 Javascript
JS Testing Properties 判断属性是否在对象里的方法
Oct 01 Javascript
axios中cookie跨域及相关配置示例详解
Dec 20 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
Mar 28 Javascript
在angular 6中使用 less 的实例代码
May 13 Javascript
详解webpack 最简打包结果分析
Feb 20 Javascript
微信小程序实现滚动加载更多的代码
Dec 06 Javascript
jQuery HTML获取内容和属性操作实例分析
May 20 jQuery
关于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支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
php木马webshell扫描器代码
2012/01/25 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
JavaScript实用技巧(一)
2010/08/16 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
python exit出错原因整理
2020/08/31 Python
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
SQL里面如何插入自动增长序列号字段
2012/03/29 面试题
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
教师自我评价范例
2013/09/24 职场文书
计算机本科生自荐信
2013/10/15 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
网络技术专业推荐信
2014/02/20 职场文书
3的组成教学反思
2014/04/30 职场文书
普通话演讲稿
2014/09/03 职场文书
公务员处分决定书
2015/06/25 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python