详谈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 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
Mar 10 Javascript
使用jQuery.fn自定义jQuery翻页插件
Jan 20 Javascript
浅谈JavaScript数据类型及转换
Feb 28 Javascript
Highcharts学习之数据列
Aug 03 Javascript
jQuery+ajax的资源回收处理机制分析
Jan 07 Javascript
五步轻松实现zTree的使用
Nov 01 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
Mar 24 Javascript
基于vue-upload-component封装一个图片上传组件的示例
Oct 16 Javascript
JavaScript&quot;模拟事件&quot;的注意要点详解
Feb 13 Javascript
JavaScript实现单英文金山打字通
Jul 24 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
Sep 21 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
Feb 05 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/12/06 PHP
PHP设计模式之迭代器模式的深入解析
2013/06/13 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
2018/05/06 Javascript
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
跟老齐学Python之正规地说一句话
2014/09/28 Python
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
Django小白教程之Django用户注册与登录
2016/04/22 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
幼儿园教师节活动方案
2014/02/02 职场文书
多媒体教室标语
2014/06/26 职场文书
琅琊山导游词
2015/02/05 职场文书
开网店计划分析
2019/07/30 职场文书
java代码实现空间切割
2022/01/18 Java/Android