浅谈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 相关文章推荐
使用JavaScript 实现各种跨域的方法
May 08 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
Mar 18 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
Sep 02 Javascript
微信小程序开发实战教程之手势解锁
Nov 18 Javascript
jQuery替换节点元素的操作方法
Mar 18 jQuery
JS实现区分中英文并统计字符个数的方法示例
Jun 09 Javascript
JQuery扩展对象方法操作示例
Aug 21 jQuery
微信小程序顶部导航栏滑动tab效果
Jan 28 Javascript
vuex + keep-alive实现tab标签页面缓存功能
Oct 17 Javascript
解决vue admin element noCache设置无效的问题
Nov 12 Javascript
十分钟教你上手ES2020新特性
Feb 12 Javascript
vue+openlayers绘制省市边界线
Dec 24 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
一个php作的文本留言本的例子(一)
2006/10/09 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
Python的标准模块包json详解
2017/03/13 Python
python中关于for循环的碎碎念
2017/06/30 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
django 常用orm操作详解
2017/09/13 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
简单了解python单例模式的几种写法
2019/07/01 Python
Python使用matplotlib绘制三维参数曲线操作示例
2019/09/10 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
《争吵》教学反思
2014/02/15 职场文书
农业项目建议书
2014/08/25 职场文书
股东授权委托书范文
2014/09/13 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
学前班语言教学计划
2015/01/20 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫
Python利用FlashText算法实现替换字符串
2022/03/31 Python