浅谈js使用in和hasOwnProperty获取对象属性的区别


Posted in Javascript onApril 27, 2017

in判断的是对象的所有属性,包括对象实例及其原型的属性;

而hasOwnProperty则是判断对象实例的是否具有某个属性。

示例代码:

<script type="text/javascript">
  function Person(){
    }
    Person.prototype.name = "allen";

    var person = new Person();
    console.log(person.hasOwnProperty("name")); //false
    console.log("name" in person); //true
    console.log(person.name); //"allen"

    person.name = "justforse";
    console.log(person.hasOwnProperty("name")); //true
    console.log("name" in person); //true
    console.log(person.name); //"justforuse"

    delete person.name;
    console.log(person.hasOwnProperty("name")); //false
    console.log("name" in person); //true
    console.log(person.name); //"allen"
</script>

以上代码执行的时候,name属性要么是从实例中获取的,要么是来源于原型,所以使用in 来访问 name属性始终返回true;而hasOwnProperty()只在属性存在与对象实例中时才返回true,当删除了实例中的name属性后,就恢复了原型中name属性的连接,所以返回allen。

这篇浅谈js使用in和hasOwnProperty获取对象属性的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
学习从实践开始之jQuery插件开发 菜单插件开发
May 03 Javascript
jquery插件制作 表单验证实现代码
Aug 17 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
Jul 31 Javascript
jquery复选框checkbox实现删除前判断
Apr 20 Javascript
轻量级的原生js日历插件calendar.js使用指南
Apr 28 Javascript
JQuery控制图片由中心点逐渐放大效果
Jun 26 Javascript
又一枚精彩的弹幕效果jQuery实现
Jul 25 Javascript
常用的js方法合集
Mar 10 Javascript
JavaScript实现获取select下拉框中第一个值的方法
Feb 06 Javascript
ES6 对象的新功能与解构赋值介绍
Feb 05 Javascript
vue中多路由表头吸顶实现的几种布局方式
Apr 12 Javascript
详解vue-cli3开发Chrome插件实践
May 29 Javascript
微信小程序 wx:for的使用实例详解
Apr 27 #Javascript
微信小程序 动态传参实例详解
Apr 27 #Javascript
微信小程序 本地数据读取实例
Apr 27 #Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 #Javascript
js获取浏览器的各种属性
Apr 27 #Javascript
jQuery鼠标悬停内容动画切换效果
Apr 27 #jQuery
详解axios在node.js中的post使用
Apr 27 #Javascript
You might like
PHP 编程的 5个良好习惯
2009/02/20 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
JS cookie中文乱码解决方法
2014/01/28 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
Python缩进和冒号详解
2016/06/01 Python
浅谈Python的异常处理
2016/06/19 Python
python实现kMeans算法
2017/12/21 Python
快速了解Python中的装饰器
2018/01/11 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
一套VC试题
2015/01/23 面试题
酒店副总岗位职责
2013/12/24 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
小学生思想品德评语
2014/12/31 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL