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


Posted in Javascript onApril 25, 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 相关文章推荐
学习YUI.Ext第五日--做拖放Darg&amp;Drop
Mar 10 Javascript
Domino中运用jQuery读取视图内容的方法
Oct 21 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
Jan 15 Javascript
HTML5之lang属性与dir属性的详解
Jun 19 Javascript
jQuery插件StickUp实现网页导航置顶
Apr 12 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
Aug 28 Javascript
jquery实现倒计时效果
Dec 14 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
Feb 16 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
Feb 19 Javascript
AngularJS 中的事件详解
Jul 28 Javascript
详解vuex commit保存数据技巧
Dec 25 Javascript
javascript实现简易聊天室
Jul 12 Javascript
3分钟掌握常用的JS操作JSON方法总结
Apr 25 #Javascript
vue.js父组件使用外部对象的方法示例
Apr 25 #Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
Apr 25 #Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
Apr 25 #Javascript
整理一些最近经常遇到的前端面试题
Apr 25 #Javascript
Vue.js 2.0学习教程之从基础到组件详解
Apr 24 #Javascript
js实现延迟加载的几种方法
Apr 24 #Javascript
You might like
php实现获取文件mime类型的方法
2015/02/11 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
php基于数组函数实现关联表的编辑操作示例
2017/07/04 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
Javascript isArray 数组类型检测函数
2009/10/08 Javascript
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
JavaScript检测上传文件大小的方法
2015/07/22 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
Python多线程和队列操作实例
2015/06/21 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
windows下python安装pip方法详解
2020/02/10 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
英国HYPE双肩包官网:英国本土时尚潮牌
2018/09/26 全球购物
运输服务质量承诺书
2014/03/27 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
公司法定代表人授权委托书
2014/09/29 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
2015年工程师工作总结
2015/04/30 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书