一、Object 对象的静态方法
所谓“静态方法”,是指部署在Object对象自身的方法。
Object.keys()方法与Object.getOwnPropertyNames方法很相似,一般用来遍历对象的(属性名,索引),并返回一个数组,该数组成员都是对象自身的(不是继承的)。
区别:
- Object.keys方法只返回可枚举的属性
- Object.getOwnPropertyNames方法还能返回不可枚举的属性名
1.Object.keys
// 定义一个 Array 对象
let arr = ["a", "b", "c"];
// 定义一个 Object 对象
let obj = {
foo: "bar",
baz: 42
};
// 定义一个 类数组 对象
let ArrayLike = {
0 : "a",
1 : "b",
2 : "c"
};
// 类数组 对象, 随机 key 排序
let anObj = {
100: 'a',
2: 'b',
7: 'c'
};
/* getFoo 是个不可枚举的属性 */
var my_obj = Object.create(
{},
{ getFoo :
{ value : function (){
return this.foo
}
}
}
);
my_obj.foo = 1;
// 打印结果
console.log(Object.keys(arr)); // ['0', '1', '2']
console.log(Object.keys(obj)); // ["foo","baz"]
console.log(Object.keys(ArrayLike)); // ['0', '1', '2']
console.log(Object.keys(anObj)); // ['2', '7', '100']
console.log(Object.keys(my_obj)); // ['foo']
总结:
返回数组中的排序与for..in是一致的,区别在于for..in循环还可以枚举原型链上的属性。