详谈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 相关文章推荐
setTimeout和setInterval的浏览器兼容性分析
Feb 27 Javascript
javascript之bind使用介绍
Oct 09 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
Jun 18 Javascript
jQuery层次选择器选择元素使用介绍
Apr 18 Javascript
Jquery 表单验证类介绍与实例
Jun 09 Javascript
jQuery实现延迟跳转的方法
Jun 05 Javascript
尝试动手制作javascript放大镜效果
Dec 25 Javascript
微信小程序 网络API发起请求详解
Nov 09 Javascript
JS出现失效的情况总结
Jan 20 Javascript
详解vue跨组件通信的几种方法
Jun 15 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
Oct 12 Javascript
JavaScript undefined及null区别实例解析
Jul 21 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
PHP小技巧之函数重载
2014/06/02 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
Python生成pdf文件的方法
2014/08/04 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
python实现串口自动触发工作的示例
2019/07/02 Python
python实现操作文件(文件夹)
2019/10/31 Python
python向图片里添加文字
2019/11/26 Python
keras 权重保存和权重载入方式
2020/05/21 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
工商管理实习自我鉴定
2013/09/28 职场文书
网络工程师的自我评价
2013/10/02 职场文书
求职者简历中的自我评价
2013/10/20 职场文书
大学自我鉴定范文
2013/12/26 职场文书
酒桌上的开场白
2015/06/01 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书