平时想要遍历一个对象时一般会采用for/in语句,通过for/in语句可以快速地拿到对象的key和value值

举个小栗子:

var obj = {name:'wan',age:24};
for(var key in obj){
console.log(key); //name age
console.log(obj[key]); //wan 24
}
可是,使用 for in 循环遍历对象的属性时,原型链上的所有属性都将被访问:
function Pro(name, age){
this.name = name;
this.age = age;
}
Pro.prototype.hobby = '羽毛球';
Pro.prototype.qq = '123';
var pro1 = new Pro('wan',24);
console.log(pro1);
for(var p in pro1){
console.log(p); //会打印所有属性,包含原型链上的
}
可是,如果要只遍历对象自身的属性呢,今天刚刚看到这个问题时,我一下子没想起来,可以利用对象的hasOwnProperty属性做一个筛选
for(var p in pro1){
if (pro1.hasOwnProperty(p)) {
console.log(p); //这样,打印的属性就只包含对象自己的了
}
}

很多时候,看到一些零碎的知识点,不去真正用上的话,看了就忘记了,知识还是得多用才记得牢,谨记!

参考文章:https://www.cnblogs.com/yuqingfamily/articles/5799907.html

for/in 循环遍历对象的属性的更多相关文章

  1. javascript遍历对象的属性

    不同类型的循环 JavaScript 支持不同类型的循环: for - 多次遍历代码块 for/in - 遍历对象属性 while - 当指定条件为 true 时循环一段代码块 do/while - ...

  2. React技巧之循环遍历对象

    原文链接:https://bobbyhadz.com/blog/react-loop-through-object 作者:Borislav Hadzhiev 正文从这开始~ 遍历对象的键 在React ...

  3. js遍历对象的属性和方法

    js遍历对象的属性和方法 一.总结 二.实例 练习1:具有默认值的构造函数 实例描述: 有时候在创建对象时候,我们希望某些属性具有默认值 案例思路: 在构造函数中判断参数值是否为undefined,如 ...

  4. JS遍历对象的属性和值

    对于需要动态获取对象的某些属性和对应的值的时候,就需要遍历对象的属性和值. const user = { name: '张三', age: 20, addr: '湖北武汉', sex: '男' } / ...

  5. cocos2d JS-(JavaScript) 几种循环遍历对象的比较

    通常我们会用循环的方式来遍历数组.但是循环是 导致js 性能问题的原因之一.一般我们会采用下几种方式来进行数组的遍历: 方式1: for in 循环: var arr = [1,2,3,4,5]; v ...

  6. javaScript for in循环遍历对象

    for循环常被我们用来遍历数组,而如何遍历对象呢? 这时就需要用到for in循环了 写一个遍历对象名简写如下: for(var xxx in ooo){console.log(xxx)} 其中xxx ...

  7. js遍历对象的属性并且动态添加属性

    var person= { name: 'zhangsan', pass: '123' , 'sni.ni' : 'sss', hello:function (){ for(var i=0;i< ...

  8. JS完成页面跳转并传参的方法|附加:循环遍历对象

    此方法只能传递较少参数 方法如下: <a href='page/index.html'>跳转</a> 以上是正常写法,如果要传参按一下写法: <!--参数写在?后面,多个 ...

  9. js中遍历对象的属性和值的方法

    鉴于循环目标是个对象,length是为undefined,用map等对数组的循环方法不行,对象就用此下方法 for(var key in _this.lists.medicines){ medicin ...

随机推荐

  1. JAVA入门[14]-Spring MVC AOP

    一.基本概念 1.AOP简介 DI能够让相互协作的软件组件保持松散耦合:而面向切面编程(aspect-oriented programming,AOP)允许你把遍布应用各处的功能分离出来形成可重用的组 ...

  2. 沉迷 Docker,无法自拔(在 Docker 中运行 MySQL)

    记得之前做网站开发的时候,因为服务端用的 MySQL 数据库,为了方便调试以及隔离生产与开发环境,自己就在本地也安装了一个 MySQL 数据库.但是用着用着慢慢的也发现了一些不舒服的地方,比如常驻后台 ...

  3. Uva 01124, POJ 3062 Celebrity jeopardy

    It's hard to construct a problem that's so easy that everyone will get it, yet still difficult enoug ...

  4. 如何在MAC上安装SSHFS

    找了半天,试了各种方法,最后一种可行的方法. macOS 版本 10.12.6 具体看下面的说明: 安装Fuse 下载 osxfuse-3.6.3.dmg 并且安装. 链接 安装sshfs 下载ssh ...

  5. 仔细讲解socket(转载https://www.zybuluo.com/phper/note/47110)

    老实讲,到目前为止,我对socket一无所知,真的.我就现学现卖用过nodejs平台的socket.io搭建过一套高可用实时性的网页聊天系统,其他,就真的只是听过它. 今天就来仔仔细细的学一下,soc ...

  6. 移动端下拉刷新上拉加载-mescroll.js插件

    最近无意间看到有这么一个上拉刷新下拉加载的插件 -- mescroll.js,个人感觉挺好用的,官网地址是:http://www.mescroll.com 然后我就看了一下文档,简单的写了一个小dem ...

  7. 使用MVC创建API

    1.新建MVC-WebAPI 2.Build后页面是这样的,这就是我们需要的页面. 3.自己Add API的页面,然后Run,会发现页面没有action和Description 4.显示action, ...

  8. Flink升级到1.4版本遇到的坑

    Flink 1.4没出来以前,一直使用Flink 1.3.2,感觉还算稳定,最近将运行环境升级到1.4,遇到了一些坑: 1.需要将可运行程序,基于1.4.0重新编译一次 2.对比了一下flink-co ...

  9. iOS 工程默认只允许竖屏,在单独界面进行横竖转换,屏幕旋转

    只含有 .关于横竖屏的代码 #import "InspectionReportViewController.h" #define SCREEN_WIDTH ([UIScreen m ...

  10. Microsoft Visual Studio 2012旗舰版(VS2012中文版下载)官方中文版

    Microsoft Visual Studio 2012 Ultimate旗舰版(VS2012中文版下载)是一个最先进的开发解决方案,它使各种规模的团队能够设计和创建出使用户欣喜的引人注目的应用程序. ...