根据:javascript学习总结之Object.keys()方法详解 - 百度文库
1.可枚举属性:
指那些内部“可枚举” 标志设置为 true 的属性 , 对于通过直接的赋值和属性初始化的属性,该标识值默认值为true,对于通过Object.defineProperty等定义的属性,该标识值默认为false。可枚举的属性可以通过 for .. in 循环进行遍历(除非该属性名是一个 Symbol)。属性的所有权是通过判断该属性是否直接属于某个对象决定的,而不是通过原型链继承的。一个对象的所有的属性可以一次性的获取到。有一些内置的方法可以用于判断、迭代/枚举以及获取对象的一个或一组属性。
2.官方解释:
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列和使用for ... in 循环遍历该对象时返回的顺序一致。如果对象的 键-值 都不可枚举,那么将返回由键组成的数组。
3. 语法:
语法:Object.keys(obj)
参数 :要返回其枚举自身属性的对象
返回值: 一个表示给定对象的所有可枚举属性的字符串数组
4.demo
4.1 处理对象,返回可枚举的属性数组
let person={
name:'一只流浪的小董',
age:12,
eat:function(){}
}
// 包住一个对象,变成数组,里面的key值就会变成字符串--数组包字符串
console.log(Object.keys(person));//['name', 'age', 'eat']
4.2 处理数组,返回索引值数组
let arr=[1,2,3,4,5]
// 包住一个数组,变成数组,里面的key值就会变成索引,从0开始,长度有多少就有几个索引 --数组包字符串
console.log(Object.keys(arr));//['0', '1', '2', '3', '4']
4.3处理字符串
let str="helloxiaodong"
// 包住一个字符串,变成数组,里面的key值就会变成索引,从0开始,长度有多少就有几个索引 --数组包字符串
console.log(Object.keys(str)); ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
4.4实用技巧
let persondong={
name:"一只流浪的小董",
age:12,
eat:function(){}
}
let obj=Object.keys(persondong)//['name', 'age', 'eat'] 这一步,将对象处理成了数组,取的是key值--也就是变量名称
obj.map((key)=>{ //然后这些变量名称去进行map循环
console.log(key,666);//name age eat
persondong[key]//获取属性对应的值,可以进行其它处理
//然后在person这个对象里面,找到对应的key值--变量名称,打印出来的就是这个名称找到的对应的变量的值
console.log(persondong[key],1);//一只流浪的小董 12 eat
})