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 相关文章推荐
自写简单JS判断是否已经弹出页面
Oct 20 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
Oct 18 Javascript
JavaScript实现页面实时显示当前时间的简单实例
Jul 20 Javascript
js中回调函数的学习笔记
Jul 31 Javascript
原生JS实现首页进度加载动画
Sep 14 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
Oct 14 Javascript
基于javascript的异步编程实例详解
Apr 10 Javascript
node中的session的具体使用
Sep 14 Javascript
React SSR样式及SEO的实践
Oct 22 Javascript
深入理解vue中的slot与slot-scope
Apr 22 Javascript
Vue和React有哪些区别
Sep 12 Javascript
在Vue中使用Select选择器拼接label的操作
Oct 22 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下一个非常全面获取图象信息的函数
2008/11/20 PHP
php把数组值转换成键的方法
2015/07/13 PHP
PHP错误机制知识汇总
2016/03/24 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
javascript 中的try catch应用总结
2017/04/01 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
Python查看多台服务器进程的脚本分享
2014/06/11 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
中学生期末评语
2014/02/03 职场文书
财务信息服务专业自荐书范文
2014/02/08 职场文书
重阳节标语大全
2014/10/07 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
如何自己动手写SQL执行引擎
2021/06/02 MySQL
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
Golang日志包的使用
2022/04/20 Golang