JS相关

Object.keys()

2017-09-19  本文已影响26人  骑着蜗牛去遛狗

在读别人的代码的时候发现了使用了Object.keys(obj)的函数,因此记录下用法

Object.keys(obj)会返回一个由传入对象的可枚举属性 组成的数组,数组名的排列顺序和使用for...in...循环遍历该对象返回的顺序一致。
区别: for...in....循环还会枚举其原型链上的属性

语法

Object.keys(obj)
obj:传入的对象
返回值:传入对象可枚举属性组成的数组

例子

//数组
var  a=["a","b","c"]
Object.keys(a)       //输出["0","1","2"]

//对象
var obj={a:1,b:2,c:3}
Object.keys(obj)    //输出["a","b","c"]

//不可枚举属性
var obj1={
    {},
    {getFoo:function(){value:function(){return this.foo}}}
}
obj1.foo="1"
Object.keys(obj1) //输出foo

注意

在ES5中,如果此方法的参数不是一个对象,而是一个原始值,则会抛出TypeError,在ES2015中,非对象的参数会强制转换为一个对象

与for... in..的区别

在上文中对比了Object.keys()和for...in..下面简单的说明下for..in..的使用

语法

for(variable in object){...}

参数

variable:每次迭代时,将不同的属性名分配给变量
object:需要迭代属性的对象

描述

for..in..枚举只遍历可枚举的属性,循环将迭代对象的所有可枚举属性和从他的构造函数的prototype继承而来

注意

for in不应该用来迭代一个下标很重要的Array,不能保证返回的一定是按照循序的索引,但是他会返回所有可枚举的属性,包括非整数名称和继承的

例子

var a={a:'1',b:'2',c:'3'}
function test(){this.color='red'}
test.prototype=a
var obj=new test()
var obj=new test()  //输出 color  a  b  c
Object.keys(obj)    //输出["color"]
上一篇下一篇

猜你喜欢

热点阅读