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 相关文章推荐
In Javascript Class, how to call the prototype method.(three method)
Jan 09 Javascript
使用prototype.js 的时候应该特别注意的几个问题.
Apr 12 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
Dec 17 Javascript
多种方式实现JS调用后台方法进行数据交互
Aug 20 Javascript
jQuery封装的获取Url中的Get参数示例
Nov 26 Javascript
Bootstrap的图片轮播示例代码
Aug 31 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
Sep 18 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
Sep 13 Javascript
基于vue组件实现猜数字游戏
May 28 Javascript
jQuery选择器之基本选择器用法实例分析
Feb 19 jQuery
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 Vue.js
关于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
如何使用Strace调试工具
2013/06/03 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
JavaScript中闭包之浅析解读(必看篇)
2016/08/25 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
axios使用拦截器统一处理所有的http请求的方法
2018/11/02 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
python数据结构之链表的实例讲解
2017/07/25 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
python游戏开发的五个案例分享
2020/03/09 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
小学生期末自我鉴定
2014/01/19 职场文书
经济贸易专业自荐信
2014/06/11 职场文书
区域经理岗位职责
2015/02/02 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
《比的意义》教学反思
2016/02/18 职场文书