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地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.从 ECMAScript 5 开始,有三种原生的方法用于列出或枚举对象的属性: for...in:该方法依次访...
    前端学习阅读 647评论 0 2
  • 序 从最近的js入门系列的阅读量逐步递减,观众老爷的兴趣也不再能够接受一些细节性的地方深度挖掘,让我有了一些思考。...
    zhaolion阅读 1,643评论 5 19
  • 1.属性的简洁表示法 允许直接写入变量和函数 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量...
    雨飞飞雨阅读 1,158评论 0 3
  • 给荀椰的一封信 荀椰: 你好!从未谋面的陌生人。 在日记.书信交流群里,我看你好活跃,老在里面蹦哒...
    发芽的种子娜阅读 248评论 18 11
  • 而最具特色的是它们的翅膀上有一对像眼睛一样的花纹。 我儿子小保罗,点睡一都没穿好就跑...
    娅卓阅读 138评论 0 0