浅谈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 相关文章推荐
Prototype使用指南之base.js
Jan 10 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
Apr 26 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
Mar 18 Javascript
javascript删除一个html元素节点的方法
Dec 20 Javascript
快速学习JavaScript的6个思维技巧
Oct 13 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
Jun 23 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
Oct 04 Javascript
基于Marquee.js插件实现的跑马灯效果示例
Jan 25 Javascript
Angular4 中常用的指令入门总结
Jun 12 Javascript
JavaScript实现简单音乐播放器
Apr 17 Javascript
JavaScript ES6中的简写语法总结与使用技巧
Dec 30 Javascript
Vue Mint UI mt-swipe的使用方式
Jun 05 Vue.js
微信小程序 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
PHP 读取文件的正确方法
2009/04/29 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
Bootstrap项目实战之首页内容介绍(全)
2016/04/25 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
[51:15]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-GAMING
2014/05/22 DOTA
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
python计算日期之间的放假日期
2018/06/05 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
Python如何使用argparse模块处理命令行参数
2019/12/11 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
市场营销毕业生自荐信
2013/11/23 职场文书
二手房购房协议书范本
2014/10/05 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书
售后服务质量承诺书
2015/04/29 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang