详谈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的掌握程度的代码
Dec 09 Javascript
JavaScript 浏览器验证代码(来自discuz)
Jul 17 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
Sep 26 Javascript
window.open关于浏览器拦截问题分析及解决方法
Feb 05 Javascript
JS检测输入字符是否包含非法字符的示例代码
Feb 11 Javascript
Node.js中对通用模块的封装方法
Jun 06 Javascript
Javascript常用字符串判断函数代码分享
Dec 08 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
Mar 10 Javascript
vue.js学习之递归组件
Dec 13 Javascript
JS实现微信弹出搜索框 多条件查询功能
Dec 13 Javascript
图解Javascript——作用域、作用域链、闭包
Mar 21 Javascript
基于vue.js的分页插件详解
Nov 27 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 Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
postman和python mock测试过程图解
2020/02/22 Python
详解python logging日志传输
2020/07/01 Python
如何解决python多种版本冲突问题
2020/10/13 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
PHP如何删除一个Cookie值
2012/11/15 面试题
一份创业计划书范文
2014/02/08 职场文书
母校寄语大全
2014/04/10 职场文书
如何在Python中创建二叉树
2021/03/30 Python
js实现模拟购物商城案例
2021/05/18 Javascript