详谈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 相关文章推荐
图片自动缩小 点击放大
Jul 07 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
Sep 03 Javascript
jquery一句话全选/取消全选
Mar 01 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
May 19 Javascript
分享15个大家都熟知的jquery小技巧
Dec 02 Javascript
深入理解Node.js的HTTP模块
Oct 12 Javascript
详解在express站点中使用ejs模板引擎
Sep 21 Javascript
JS 实现百度搜索功能
Feb 01 Javascript
Vue单页及多页应用全局配置404页面实践记录
May 22 Javascript
layui实现checkbox的目录树tree的例子
Sep 12 Javascript
解决Vue动态加载本地图片问题
Oct 09 Javascript
js实现飞机大战小游戏
Aug 26 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
MySQL修改密码方法总结
2008/03/25 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
window.open的功能全解析
2006/10/10 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python中Genarator函数用法分析
2015/04/08 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
python取余运算符知识点详解
2019/06/27 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
Python中logging日志库实例详解
2020/02/19 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
2014全国两会学习心得体会1000字
2014/03/10 职场文书
《春笋》教学反思
2014/04/15 职场文书
建筑投标担保书
2014/05/20 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
小学体育课教学反思
2016/02/16 职场文书
python 模块重载的五种方法
2021/04/24 Python
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
Python利用zhdate模块实现农历日期处理
2022/03/31 Python