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 对输入框进行限制(常用的都有)
Jul 30 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
Apr 06 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
Jul 08 Javascript
java、javascript实现附件下载示例
Aug 14 Javascript
jquery实现相册一下滑动两次的方法
Feb 09 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
Mar 25 Javascript
jQuery实现图片向左向右切换效果的简单实例
May 18 Javascript
bootstrap table 多选框分页保留示例代码
Mar 08 Javascript
JavaScript中如何判断一个值的类型
Sep 15 Javascript
使用typescript改造koa开发框架的实现
Feb 04 Javascript
vue中移动端调取本地的复制的文本方式
Jul 18 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
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
php实现读取超大文件的方法
2014/07/28 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
如何在PHP中使用数组
2020/06/09 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
一个基于jquery的图片切换效果
2010/07/06 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
js严格模式总结(分享)
2016/08/22 Javascript
js遍历map javaScript遍历map的简单实现
2016/08/26 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
Angular6 正则表达式允许输入部分中文字符
2018/09/10 Javascript
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
python scatter散点图用循环分类法加图例
2019/03/19 Python
python简单实现AES加密和解密
2019/03/28 Python
Python 的AES加密与解密实现
2019/07/09 Python
解决pip install psycopg2出错问题
2020/07/09 Python
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
节省高达65%的城市景点费用:Go City
2019/07/06 全球购物
为什么使用接口?
2014/08/13 面试题
小学教师岗位职责
2013/11/25 职场文书
光荣之路观后感
2015/06/12 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
2016年“12.3”国际残疾人日活动总结
2016/04/01 职场文书