JavaScript获取对象的属性

1.从 ECMAScript 5 开始,有三种原生的方法用于列出或枚举对象的属性:

  • for...in: 该方法依次访问一个对象及其原型链中所有可枚举的属性
let obj = {a:1, b:2, c:3};
for (let i in obj) {
    console.log("obj." + i + " = " + obj[i]);
}
// "obj.a = 1" "obj.b = 2" "obj.c = 3"
  • Object.keys(O): 该方法返回一个数组,它包含了对象O自身的所有可枚举属性的名称
let obj = { 0 : "a", 1 : "b", 2 : "c"};
console.log(Object.keys(obj));    //["0", "1", "2"]
  • Object.getOwnPropertyNames(O):该方法返回一个数组,它包含了对象O所有拥有的属性(包括不可枚举)的名称
var obj = Object.create({}, {
    getFoo: {
       enumerable: false
    }
});
obj.foo = 1;
obj.prototype = {a:1, b:2, c:3};
console.log(Object.getOwnPropertyNames(obj).sort());
//["foo", "getFoo", "prototype"]
console.log(Object.getOwnPropertyNames('asdfgc'));
//["0", "1", "2", "3", "4", "5", "length"]

2.区别

  • 如果你只要获取到可枚举属性,查看 Object.keys 或用 for...in循环(还会获取到原型链上的可枚举属性,不过可以使用hasOwnProperty()方法过滤掉)

demo地址

你可能感兴趣的:(JavaScript获取对象的属性)