for/in 语句循环遍历对象的属性。 
js中获取key得到某对象中相对应的value的方法:obj.key 
js中根据动态key得到某对象中相对应的value的方法有二: 
一、var key = "name1";var value = obj[key]; 
二、var key = "name1";var value = eval("obj."+key);

object对象没有length属性,那么获取object对象的length就可以通过遍历得到key值的数组的长度来获取啦~

使用 for in 循环遍历对象的属性时,原型链上的所有属性都将被访问:

Object.prototype.bar = 10;// 修改Object.prototype
var obj={"name":"wjy","age":26,"sex":"female"};//定义一个object对象
var keys=[];//定义一个数组用来接受key
var values=[];//定义一个数组用来接受value    for(var key in obj){    keys.push(key);    values.push(obj[key]);//取得value      }
alert("keys is :"+keys+" and values is :"+values);
//keys is : name,age,sex,bar and values is : wjy,26,female,10

  推荐总是使用 hasOwnProperty 方法, 这将会避免原型对象扩展带来的干扰:

function allpro(obj){  var keys=[];   var values=[];    for(var key in obj){   //只遍历对象自身的属性,而不包含继承于原型链上的属性。  if (obj.hasOwnProperty(key) === true){  keys.push(key);    values.push(obj[key]);   }                 }  alert("keys is :"+keys+" and values is :"+values);
}
Object.prototype.bar = 1;// 修改Object.prototype
var o={"name":"wjy","age":26,"sex":"female"};//定义一个object对象
allpro(o);
//keys is : name,age,sex and values is: wjy,26,female

  

1.遍历可枚举的自身属性

可枚举的意思就是该属性的[[Enumerable]]特性为true,自身属性的意思就是该属性不是从原型链上继承下来的.

(function () {var propertys = Object.keys(window);alert(propertys.length);         //3alert(propertys.join("\n"));     //window,document,InstallTrigger,除了最后一个是火狐私有的属性,原来window对象只有两个可枚举的自身属性.window属性指向window对象自身,一般没什么用.
})()

  

2.遍历所有的自身属性

特性为不可枚举的属性也并不是遍历不到,ES5给我们提供了getOwnPropertyNames方法,可以获取到一个对象的所有自身属性.

(function () {var propertys = Object.getOwnPropertyNames(window);alert(propertys.length);       //72alert(propertys.join("\n"));   //Object,Function,eval等等
})()

  

3.遍历可枚举的自身属性和继承属性

继承属性怎么遍历,你应该知道,就是最常用的for in遍历

(function () {var getEnumPropertyNames = function (obj) {var props = [];for (prop in obj) {props.push(prop);}return props;}var propertys = getEnumPropertyNames(window);alert(propertys.length);       //185alert(propertys.join("\n"));   //addEventListener,onload等等
})()

  

4.遍历所有的自身属性和继承属性

这种遍历主要用在各种js调试工具的代码补全功能上.比如Firebug的.

(function () {var getAllPropertyNames = function (obj) {var props = [];do {props = props.concat(Object.getOwnPropertyNames(obj));} while (obj = Object.getPrototypeOf(obj));return props;}var propertys = getAllPropertyNames(window);alert(propertys.length);          //276alert(propertys.join("\n"));      //toString等
})()

  

转载于:https://www.cnblogs.com/laneyfu/p/7461955.html

JavaScript中对象的属性:如何遍历属性相关推荐

  1. JavaScript中的属性:如何遍历属性

    JavaScript中的属性:如何遍历属性 在JavaScript中,遍历一个对象的属性往往没有在其他语言中遍历一个哈希(有些语言称为字典)的键那么简单.这主要有两个方面的原因:一个是,JavaScr ...

  2. 删除javaScript中对象的属性

    删除javaScript中对象的属性 语法 delete 对象.属性;

  3. php property 获取,JavaScript中如何获取和设置property属性代码详解

    JavaScript中对象的property有三个属性: 1.writable.该property是否可写. 2.enumerable.当使用for/in语句时,该property是否会被枚举. 3. ...

  4. javascript中元素的scrollLeft和scrollTop属性说明

    这两个属性的适用范围: 注意: 这两个属性只能用于元素设置了overflow的css样式中.否则这两个属性没有任何意义. 且overflow的值不能为visible,但可以为hidden,auto,s ...

  5. JavaScript中对象(Object)的方法

    JavaScript中对象方法总结: 资料来源:网道-互联网开发文档 [https://wangdoc.com/] 1.Object.getPrototypeOf(Object) Object.get ...

  6. javascript中对象的assign()方法

    javascript中对象的assign()方法 Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 语法: Object.assign( ...

  7. javascript中对象_了解JavaScript中的承诺

    javascript中对象 我向您承诺,到本文结束时,您将更好地了解JavaScript. 我与JavaScript有一种"爱与恨"的关系. 但是尽管如此,JavaScript一直 ...

  8. 细说JavaScript中对象的属性和方法

    最近在回家的路上读了尼古拉斯的新书<JavaScript面向对象精要>,发现自己对对象的属性和方法不是很熟悉,特别是es5新增的部分,特写此文总结一下,同时也与大家共勉. 本文分为两部分, ...

  9. [转] JavaScript中的属性:如何遍历属性

    在JavaScript中,遍历一个对象的属性往往没有在其他语言中遍历一个哈希(有些语言称为字典)的键那么简单.这主要有两个方面的原因:一个是,JavaScript中的对象通常都处在某个原型链中,它会从 ...

  10. JavaScript 中对象的属性类型

    对象的属性类型 JavaScript 中的对象的属性包括数据属性和访问器属性,在 JavaScript 引擎的内部实现中定义了用于描述属性(property)的特性(attribute).规范中将特性 ...

最新文章

  1. java心电图心率计算_java如何画心电图?
  2. CRM 2016解读
  3. android复位机器人图片,安卓(Android)新图标!小绿机器人换脸啦
  4. “docker-app”实用工具分享,大大提高 Compose 文件复用率
  5. 牛客 牛牛的独特子序列(双指针/二分查找)
  6. quartz可以指定方法名吗_2020象限仪流星雨肉眼可以看见吗?象限仪座流星雨观测方法...
  7. Android ViewFlipper源码分析
  8. 在MATLAB中的图例标注及实例说明
  9. 2020中兴捧月-傅里叶-丰收祭赛题常规解法
  10. 说一说我电脑上的那些必备软件
  11. B02 - 025、使用Hive配置mysql作为元数据库
  12. 喝多了,头痛,发篇喝酒坏处的文章,提提醒,适量饮酒
  13. 西门子PLC1200模拟量功能案例
  14. 解决阿里云域名解析失败的问题 - 总结篇
  15. 怎样在线快速缩小动图大小?怎样在线压缩gif图片?
  16. 使用Python实现QQ窗口抖动
  17. 计算机中流水线的应用,计算机中的流水线技术
  18. html5手电筒样式,利用HTML5实现SVG模拟手电筒照明特效
  19. 如何选择语音短信通知平台?语音短信通知平台接入教程
  20. Python基础+数据科学入门(三)组合数据类型

热门文章

  1. adobebridge2020mac资源管理软件安装
  2. Illustrator 教程,如何在 Illustrator 中格式化文本?
  3. inDesign 教程,如何在表格中添加和重新排序图像?
  4. 苹果Mac全能视频播放器:Playr
  5. 如何从视频中删除声音?
  6. 使用Movavi Photo Editor如何修复照片中的红眼
  7. background: radial-gradient径向渐变
  8. linux 中软件安装的三种方法
  9. Metasploit物联网安全渗透测试增加对硬件的支持
  10. MyBatis-3.4.2-源码分析12:XML解析之mapperElement(root.evalNode(mappers))