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 相关文章推荐
prototype class详解
Sep 07 Javascript
编写可维护面向对象的JavaScript代码[翻译]
Feb 12 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
Jun 21 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
Jul 31 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
Sep 30 Javascript
客户端验证用户名和密码的方法详解
Jun 16 Javascript
纯JS实现可拖拽表单的简单实例
Sep 02 Javascript
完美解决IE不支持Data.parse()的问题
Nov 24 Javascript
Angular.js实现注册系统的实例详解
Dec 18 Javascript
js插件实现图片滑动验证码
Sep 29 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
Nov 14 Javascript
微信小程序与公众号卡券/会员打通的问题
Jul 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与MySQL开发的8个技巧小结
2010/12/17 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
JavaScript的Function详细
2006/11/14 Javascript
javascript delete 使用示例代码
2010/03/29 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
浅谈一种让小程序支持JSX语法的新思路
2019/06/16 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
使用C++扩展Python的功能详解
2018/01/12 Python
python使用插值法画出平滑曲线
2018/12/15 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
青年教师培训方案
2014/02/06 职场文书
《花瓣飘香》教学反思
2014/04/15 职场文书
领导干部保密承诺书
2014/08/30 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
退休欢送会主持词
2015/07/01 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
Python音乐爬虫完美绕过反爬
2021/08/30 Python
Nginx报404错误的详细解决方法
2022/07/23 Servers