详谈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 相关文章推荐
JSDoc 介绍使用规范JsDoc的使用介绍
Feb 12 Javascript
js动态修改整个页面样式达到换肤效果
May 23 Javascript
javascript对中文按照拼音排序代码
Aug 20 Javascript
javascript使用prototype完成单继承
Dec 24 Javascript
js仿腾讯QQ的web登陆界面
Aug 19 Javascript
Vue组件中prop属性使用说明实例代码详解
May 31 Javascript
JavaScript创建对象的常用方式总结
Aug 10 Javascript
记录一篇关于redux-saga的基本使用过程
Aug 18 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
Jan 15 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
Sep 16 Javascript
如何通过vscode运行调试javascript代码
Jul 24 Javascript
js删除指定位置超链接中含有百度与360的标题
Jan 06 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 和 HTML
2006/10/09 PHP
PHP&amp;MYSQL服务器配置说明
2006/10/09 PHP
PHP 获取目录下的图片并随机显示的代码
2009/12/28 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
基于JavaScript 类的使用详解
2013/05/07 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
python实现的一个p2p文件传输实例
2014/06/04 Python
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
对numpy中轴与维度的理解
2018/04/18 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
python自动发微信监控报警
2019/09/06 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
大学考试作弊检讨书
2014/01/30 职场文书
高中班级口号
2014/06/09 职场文书
党支部活动策划方案
2014/08/18 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
2016教师学习教育法心得体会
2016/01/19 职场文书
Python基础之进程详解
2021/05/21 Python
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang