Array.prototype.sayLength=function(){
console.log(this.length);
}
let arr = ['a','b','c','d'];
arr.name='数组';
Object.defineProperties(arr,{
type:{
value:true,
writable:true,
enumerable:true
}
})
// for in 一般用于遍历对象的属性;
1.作用于数组的for in除了会遍历数组元素外,还会遍历自定义可枚举的属性,以及原型链上可枚举的属性;
2.作用于数组的for in的遍历结果是数组的索引,且都为字符串型,不能用于运算;
3.某些情况下,可能按照随机顺序遍历数组元素;
for(let i in arr){ //输出的都是属性
console.log(i) //0,1,2,3,name,type,sayLength
}

Object.keys()
1.遍历结果为对象自身可枚举属性组成的数组,数组中的属性名排列顺序与使用for in循环遍历该对象时返回的顺序一致,
2.与for in区别在于不能遍历出原型链上的属性;
*

Array.prototype.sayLength=function(){

console.log(this.length);
}

let arr=['a','b','c','d'];
arr.name = '数组';

Object.defineProperties(arr,{
type:{
value:true,
writable:true,
enumerable:true
}
});

var keys = Object.keys(arr);
console.log(keys); //) ["0", "1", "2", "3", "name", "type"]

for of
1.es6中添加的循环语法;
// 2.for of支持遍历数组、类对象(例如:DOM NodeList)、字符串、map对象、Set对象
3.for of不支持遍历普通对象,可通过与Object.keys()搭配使用遍历(例子2);
4.for of 遍历后的输出结果为数组元素的值;
5搭配实例方法entries(),同时输出数组内容弄和索引(例子2)
例子1

* */
Array.prototype.sayLength=function(){
console.log(this.length);
}

let arr= ['a','b','c','d'];
arr.name ='数组';
Object.defineProperties(arr,{
type:{
value:true,
writable:true,
enumerable:true
}
});

for(let i of arr){
console.log(i);// a,b,c,d
}

//例子2

var person={
name:'coco',
age:24,
locate:{
country:'china',
city:'beijing',
}
}

for(var key of Object.keys(person)){
//使用Object.keys()方法获取对象key的数组
console.log(key+":"+person[key]);//name:coco age:24 locate:[object Object]

}

//例子3
let arr3=['a','b','c'];
for(let [index,val] of arr3.entries()){
console.log(index+":"+val);
}

//让jquery对象支持for of遍历
// 因为jQuery对象与数组相似
// 可以为其添加与数组一致的迭代器方法

** jQuery.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator];

for in,Object.keys()与for of的用法与区别的更多相关文章

  1. [转]IE8兼容Object.keys

    转自:http://blog.sina.com.cn/s/blog_6d63cf160102vbsg.html 只需要加入 var DONT_ENUM = "propertyIsEnumer ...

  2. JavaScript中in操作符(for..in)、Object.keys()和Object.getOwnPropertyNames()的区别

    ECMAScript将对象的属性分为两种:数据属性和访问器属性.每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以 ...

  3. Object.keys()

    Object.keys(obj),返回一个数组,数组里是该obj可被枚举的所有属性名.请看示例: 示例一: function Pasta(grain, width, shape) { this.gra ...

  4. 获取对象属性(key)组成的数组 Object.keys( obj ).md

    Object.keys() 方法会返回一个由给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 一个 for-in ...

  5. for in,Object.keys()与for of的区别

    for in 1.for in一般用于遍历对象的属性: 2.作用于数组的for in除了会遍历数组元素外,还会遍历自定义可枚举的属性,以及原型链上可枚举的属性:3.作用于数组的for in的遍历结果是 ...

  6. Object.keys、Object.getOwnPropertyNames区别

    用途 Object.keys 定义:返回一个对象可枚举属性的字符串数组: Object.getOwnPropertyNames 定义:返回一个对象可枚举.不可枚举属性的名称: 属性的可枚举性.不可枚举 ...

  7. 遍历对象属性(for in、Object.keys、Object.getOwnProperty)

    js中几种遍历对象的方法,包括for in.Object.keys.Object.getOwnProperty,它们在使用场景方面各有不同. for in 主要用于遍历对象的可枚举属性,包括自有属性. ...

  8. [转] JavaScript中in操作符(for..in)、Object.keys()和Object.getOwnPropertyNames()的区别

    ECMAScript将对象的属性分为两种:数据属性和访问器属性.每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以 ...

  9. Array.from();Object.keys();Array.map()

    Array.from():方法从一个类似数组或可迭代对象创建一个新的数组形式: const bar = ["a", "b", "c"]; A ...

随机推荐

  1. asp.net MVC Model 类的主键 int类型、string类型、GUID类型。

    在使用asp.net mvc进行定义 模型类的时候,一般情况下,我们都会定义一个属性为 int iD{get;set;} 或为int ClassNameID {get;set;},在这种情况下 1.I ...

  2. centos配置nodejs和mysql

    我使用的是centos7.2 64位,弄了一大晚上试了各种方法,安装的nodejs就是启动不了服务器.全是IP能ping通,浏览器不能访问.端口都是打开了的.安全组也设置了,就是不行.最后阿里云客服电 ...

  3. 洛谷 P1081 开车旅行【双向链表+倍增】

    倍增数组的20和N写反了反复WAWAWA-- 注意到a和b在每个点上出发都会到一个指定的点,所以这样构成了两棵以n点为根的树 假设我们建出了这两棵树,对于第一问就可以枚举起点然后倍增的找出ab路径长度 ...

  4. P4575 [CQOI2013]图的逆变换

    传送门 如果新的图里存在边\((u,v)\),那么说明原图中\(u\)的终点和\(v\)的起点是同一个点 于是可以对新图中的每个点维护它的起点和终点,如果有一条边就把对应两个应该相等的点用并查集连起来 ...

  5. PHP arrray_filter(), array_map()区别与应用

    array_filter()用回调函数过滤数组中的元素.依次将数组中的元素传递给回调函数,如果回调函数返回true,则被过滤的元素作为返回数组的元素,并最终一起返回.数组的键名保持不变.array_m ...

  6. -------Pokemon Master------很水-------

    A - Pokemon Master Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Submit Sta ...

  7. Python测试工具——nose

    1.nose 特点: a)         自动发现测试用例(包含[Tt]est文件以及文件包中包含test的函数) b)         以test开头的文件 c)         以test开头的 ...

  8. EditextText输入类型

    android:inputType="none"--输入普通字符 android:inputType="text"--输入普通字符 android:inputT ...

  9. poj1781In Danger(约瑟夫) 问题

    链接 之前队内赛中的一道题目 当时怎么想也没想到,就一直放到了今天,刚才看另一题的讲解突然看到时拿这个题作为引子来讲的,就仔细看了下. 参考<<具体数学>> p7. Josep ...

  10. 移动端如何定义字体font-family

    移动端如何定义字体font-family 中文字体使用系统默认即可,英文用Helvetica /* 移动端定义字体的代码 */ body{font-family:Helvetica;} 参考<移 ...