详谈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 相关文章推荐
让IE6支持min-width和max-width的方法
Jun 25 Javascript
JS案例分享之金额小写转大写
May 15 Javascript
原生javascript实现拖动元素示例代码
Sep 01 Javascript
Linux下使用jq友好的打印JSON技巧分享
Nov 18 Javascript
javascript等号运算符使用详解
Apr 16 Javascript
浅谈js中function的参数默认值
Feb 20 Javascript
vue中appear的用法
Aug 17 Javascript
vuex 项目结构目录及一些简单配置介绍
Apr 08 Javascript
微信小程序ibeacon三点定位详解
Oct 31 Javascript
Vue触发隐藏input file的方法实例详解
Aug 14 Javascript
JS开发自己的类库实例分析
Aug 28 Javascript
基于JavaScript实现简单的轮播图
Mar 03 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登录环节防止sql注入的方法浅析
2014/06/30 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
Yii2如何批量添加数据
2016/05/17 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
js TextArea的选中区域处理
2010/12/28 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
python实现校园网自动登录的示例讲解
2018/04/22 Python
Django读取Mysql数据并显示在前端的实例
2018/05/27 Python
python实现括号匹配的思路详解
2018/08/23 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
Python实现Keras搭建神经网络训练分类模型教程
2020/06/12 Python
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
2018/11/30 HTML / CSS
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
C面试题
2015/10/08 面试题
店长岗位职责
2013/11/21 职场文书
服务员岗位职责
2014/01/29 职场文书
员工薪酬激励方案
2014/06/13 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
关于对TypeScript泛型参数的默认值理解
2022/07/15 Javascript