详谈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 相关文章推荐
js与css实现弹出层覆盖整个页面的方法
Dec 13 Javascript
DOM基础教程之模型中的模型节点
Jan 19 Javascript
JavaScript将数字转换成大写中文的方法
Mar 23 Javascript
javascript图片滑动效果实现
Jan 28 Javascript
前端程序员必须知道的高性能Javascript知识
Aug 24 Javascript
Javascript 两种刷新方法以及区别和适用范围
Jan 17 Javascript
AngularJS自定义指令之复制指令实现方法
May 18 Javascript
Vuejs 页面的区域化与组件封装的实现
Sep 11 Javascript
老生常谈JavaScript面向对象基础与this指向问题
Oct 16 Javascript
layui多图上传实现删除功能的例子
Sep 23 Javascript
Vue.js中的高级面试题及答案
Jan 13 Javascript
Vue绑定用户接口实现代码示例
Nov 04 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
Thinkphp中Create方法深入探究
2014/06/16 PHP
Yii框架where查询用法实例分析
2019/10/22 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
原生JavaScript实现购物车
2021/01/10 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
python障碍式期权定价公式
2019/07/19 Python
Python如何实现动态数组
2019/11/02 Python
NumPy排序的实现
2020/01/21 Python
CSS3弹性盒模型开发笔记(一)
2016/04/26 HTML / CSS
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
局部内部类是否可以访问非final变量?
2013/04/20 面试题
UML设计模式笔试题
2014/06/07 面试题
实习教师自我鉴定
2013/12/09 职场文书
优秀教师的感人事迹
2014/02/04 职场文书
家长会学生演讲稿
2014/04/26 职场文书
地球一小时活动总结
2015/02/27 职场文书
Python基础知识学习之类的继承
2021/05/31 Python
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android