详谈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 相关文章推荐
取键盘键位ASCII码的网页
Jul 30 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
Mar 26 Javascript
javascript中使用未定义变量或值的情况分析
Jul 19 Javascript
Vue.js 插件开发详解
Mar 29 Javascript
vue.js实现条件渲染的实例代码
Jun 22 Javascript
jQuery EasyUI Layout实现tabs标签的实例
Sep 26 jQuery
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
Dec 09 Javascript
angular的输入和输出的使用方法
Sep 22 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
Nov 23 Javascript
vue简单练习 桌面时钟的实现代码实例
Sep 19 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 Javascript
node脚手架搭建服务器实现token验证的方法
Jan 20 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 程序员应该使用的10个组件
2009/10/31 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
js CSS操作方法集合
2008/10/31 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
详解JavaScript操作HTML DOM的基本方式
2015/10/21 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
2017/05/22 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
python33 urllib2使用方法细节讲解
2013/12/03 Python
Python编写百度贴吧的简单爬虫
2015/04/02 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
python3中sys.argv的实例用法
2020/04/24 Python
Python如何在bool函数中取值
2020/09/21 Python
python利用platform模块获取系统信息
2020/10/09 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
2020/11/12 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
乳制品整治工作方案
2014/05/29 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
Go timer如何调度
2021/06/09 Golang
Python自动化爬取天眼查数据的实现
2021/06/15 Python