浅谈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 相关文章推荐
推荐30个新鲜出炉的精美 jQuery 效果
Mar 26 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
Jul 05 Javascript
JQuery学习总结【一】
Dec 01 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
Dec 19 Javascript
微信小程序联网请求的轮播图
Jul 07 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
Nov 28 Javascript
javascript实现导航栏分页效果
Jun 27 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
Jul 25 Javascript
微信公众号平台接口开发 获取access_token过程解析
Aug 14 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
Jul 22 Javascript
JS轮播图的实现方法2
Aug 25 Javascript
详解React路由传参方法汇总记录
Nov 29 Javascript
微信小程序 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
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
php代码把全角数字转为半角数字
2007/12/10 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
两款万能的php分页类
2015/11/12 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
在Python的Django框架中加载模版的方法
2015/07/16 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
怎样让char类型的东西转换成int类型
2013/12/09 面试题
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
工程项目经理岗位职责
2013/12/15 职场文书
总经理职责
2013/12/22 职场文书
校园广播稿500字
2014/02/04 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
员工保密承诺书
2014/05/28 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
Java设计模式之代理模式
2022/04/22 Java/Android