详谈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 相关文章推荐
Javascript 面向对象 对象(Object)
May 13 Javascript
JS实现的省份级联实例代码
Jun 24 Javascript
javascript常见用法总结
May 22 Javascript
jquery的总体架构分析及实现示例详解
Nov 08 Javascript
介绍一个简单的JavaScript类框架
Jun 24 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
Dec 19 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
Feb 07 Javascript
学习使用jQuery表单验证插件和日历插件
Feb 13 Javascript
js实现图片加载淡入淡出效果
Apr 07 Javascript
详解vue+css3做交互特效的方法
Nov 20 Javascript
React Native之prop-types进行属性确认详解
Dec 19 Javascript
vue-cli脚手架的.babelrc文件用法说明
Sep 11 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
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
javascript 面向对象继承
2009/11/26 Javascript
JS 的应用开发初探(mootools)
2009/12/19 Javascript
Jquery 扩展方法
2010/05/06 Javascript
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
javascript初学者常用技巧
2014/09/02 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
python 变量初始化空列表的例子
2019/11/28 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
某个公司的Java笔面试题
2016/03/11 面试题
优秀学生自我鉴定范例
2013/12/18 职场文书
研修第一天随笔感言
2014/02/15 职场文书
办公设备采购方案
2014/03/16 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL