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 相关文章推荐
Javascript实现的分页函数
Dec 22 Javascript
JavaScript 计算当天是本年本月的第几周
Mar 22 Javascript
Jquery ui css framework
Jun 28 Javascript
Javascript 加载和执行-性能提高篇
Dec 28 Javascript
node.js中的fs.fchown方法使用说明
Dec 16 Javascript
AngularJS入门教程之多视图切换用法示例
Nov 02 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
Apr 28 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
Jul 21 Javascript
javaScript中的空值和假值
Dec 18 Javascript
jquery自定义显示消息数量
Dec 19 jQuery
vue实现新闻展示页的步骤详解
Apr 11 Javascript
【js设计模式】SOLID五大设计原则
Mar 24 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
PHP+DBM的同学录程序(4)
2006/10/09 PHP
浅析php与数据库代码开发规范
2013/08/08 PHP
php漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
PHP实现简易计算器功能
2020/08/28 PHP
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
python非递归全排列实现方法
2017/04/10 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
python支持多线程的爬虫实例
2019/12/21 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
canvas与html5实现视频截图功能示例
2016/12/15 HTML / CSS
蒂娜商店:Tiina the Store
2019/12/07 全球购物
金士达面试非笔试
2012/03/14 面试题
农业资源与环境专业自荐信范文
2013/12/30 职场文书
文明城市标语
2014/06/16 职场文书
婚内房产协议书范本
2014/10/02 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android