详谈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 相关文章推荐
浅析js中取绝对值的2种方法
Jul 09 Javascript
Js实现滚动变色的文字效果
Jun 16 Javascript
简单的JS时钟实例讲解
Jan 13 Javascript
Bootstrap3学习笔记(三)之表格
May 20 Javascript
Vue数据驱动模拟实现2
Jan 11 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
Jun 15 Javascript
jquery+php后台实现省市区联动功能示例
May 23 jQuery
Element-UI+Vue模式使用总结
Jan 02 Javascript
JavaScript ES6 Class类实现原理详解
May 08 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
Dec 04 Javascript
vue 计算属性和侦听器的使用小结
Jan 25 Vue.js
js实现验证码干扰(静态)
Feb 22 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调用C代码的实现方法
2014/03/11 PHP
Zend Guard使用指南及问题处理
2015/01/07 PHP
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
python中__call__内置函数用法实例
2015/06/04 Python
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
精彩的广告词
2014/03/19 职场文书
小小商店教学反思
2014/04/27 职场文书
政府绩效管理实施方案
2014/05/04 职场文书
优质服务口号
2014/06/11 职场文书
新农村建设标语
2014/06/24 职场文书
同学聚会邀请函
2015/01/30 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
谢师宴学生致辞
2015/07/27 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
详解Python描述符的工作原理
2021/06/11 Python
SQL基础的查询语句
2021/11/11 MySQL