Object.keys(obj) 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致。
例子如下:
①.简单的数组(simple array)
②.类数组(array like object)
③.key值随机排列的类数组
④.如下例子中 getFoo 是不可枚举的属性
注意点:
在ES5中,如果此方法的参数不是对象(而是一个原始值),那么它会抛出 TypeError;在ES2015中,非对象的参数将被强制转换为一个对象;
Object.keys("foo");
// TypeError : "foo" is not an object (ES5 code)
Object.keys("foo");
// ["0" , "1" , "2"] (ES2015 code)
要在原生不支持的旧环境中添加兼容的 Object.keys,可添加如下方法,以使兼容;
上面的代码再 IE7(也许IE8也是)下有个问题 ,就是如果传入一个来自其他 window 对象下的对象时,不可枚举的属性也会获取到。