平时想要遍历一个对象时一般会采用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. anaconda不能安装python的包问题

    在点了n次,重启应用多次之后,安装包(apply)之后还是没有反应,依然心平气和的我突然想到用管理员模式打开,结果就可以愉快的装包了,估计创建新的环境也是要管理员打开的.

  2. Bandit Wargame Level18 Writeup(interactive shell and .bashrc )

    Bandit Level 18 → Level 19 Level Goal The password for the next level is stored in a file readme in ...

  3. 浏览器兼容性--IE11以及Edge等下载文件的中文名出现乱码,前后端解决方案

    项目中有用到文件下载功能,之前在处理下载时对IE浏览器下文件下载名进行过处理,测试也没有问题,但是功能上线后,业务反馈IE11文件下载文件名依然乱码.打印User-Agent字符串如下: IE11 U ...

  4. git学习笔记5-撤销操作

    git撤销有四种情况,一是没有commit,想恢复所有文件:二是没有commit,想恢复全部文件:三是已经commit了,想恢复某个版本:四是本地已经提交了,想从远程库恢复. 1. 没有commit, ...

  5. AutoLayout的几种方法

    1.XIB 2.Fram 3.屏幕比例适配(个人比较推荐)  iOS屏幕适配(尺寸适配) 4.NSLayoutConstraint. 5.Masonry  概述 使用 Objective-C 纯代码编 ...

  6. Spring(概念)

    在本文中只讲述一些概念性的东西,因为我在开始学习JAVA的时候对这些概念性的东西总是不太理解,总结总结再感悟一下,也方便后人. 理解的不深,用通俗的语言讲一下: 百度百科这样介绍: spring框架主 ...

  7. ABP .Net Core API和Angular前端APP独立部署跨域问题(No Access-Control-Allow-Origin)

    前言: 通过ABP官网(https://aspnetboilerplate.com)下载ASP.NET Core 2.x + Angular模板项目是按ReStful风格架构Web API和angul ...

  8. MySQL 使用经验

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/10 在索引中完成排序 SELECT thread_id FROM ...

  9. 【知了堂学习笔记】_String、StringBuffer与StringBuilder的区别

    String Stringbuffer  StringBuilder的区别: 1.string是字符串常量,且长度是不可改变的,Stringbuffer.stringBuilder是字符串变量 2.S ...

  10. rm 命令详解

    rm  作用: 删除一个目录中的一个或多个文件或目录,也可以将某个目录及下属的所有文件及子目录均删除掉, 对于连接文件只是删除整个连接文件,而保持原有文件. 注意: 使用rm 命令要格外小心,因为一旦 ...