详谈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 相关文章推荐
ASP 过滤数组重复数据函数(加强版)
May 31 Javascript
关于JavaScript与HTML的交互事件
Apr 12 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
js实现带有介绍的Select列表菜单实例
Aug 18 Javascript
javascript函数式编程程序员的工具集
Oct 11 Javascript
浅谈javascript中关于日期和时间的基础知识
Jul 13 Javascript
JavaScript 计算笛卡尔积实例详解
Dec 02 Javascript
React-router 4 按需加载的实现方式及原理详解
May 25 Javascript
bootstrap响应式工具使用详解
Nov 29 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
Aug 06 Javascript
深入学习js函数的隐式参数 arguments 和 this
Jun 24 Javascript
前端性能优化建议
Sep 17 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
写一个用户在线显示的程序
2006/10/09 PHP
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
Python中暂存上传图片的方法
2015/02/18 Python
图文详解WinPE下安装Python
2016/05/17 Python
Python reduce()函数的用法小结
2017/11/15 Python
PyQt5实现下载进度条效果
2018/04/19 Python
使用python存储网页上的图片实例
2018/05/22 Python
python3中的md5加密实例
2018/05/29 Python
python实现文件助手中查看微信撤回消息
2019/04/29 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
工业设计专业个人求职信范文
2013/12/28 职场文书
目标责任书范本
2014/04/16 职场文书
中学生励志演讲稿
2014/04/26 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014个人年度工作总结
2014/12/15 职场文书
初中化学教学反思
2016/02/22 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
Kubernetes控制节点的部署
2022/04/01 Servers