JavaScript获取对象的属性

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

for...in:该方法依次访问一个对象及其原型链中所有可枚举的属性

let obj = {a:1,b:2,c:3};for(let iinobj) {  console.log("obj."+ i +" = "+ obj[i]);}// "obj.a = 1"// "obj.b = 2"// "obj.c = 3"

Object.keys(O):该方法返回一个数组,它包含了对象O自身的所有可枚举属性的名称

letobj = {0:"a",1:"b",2:"c"};console.log(Object.keys(obj));    //["0","1","2"]

Object.getOwnPropertyNames(O):该方法返回一个数组,它包含了对象O所有拥有的属性(包括不可枚举)的名称

varobj =Object.create({}, {getFoo: {value:function(){returnthis.foo; },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()方法过滤掉)

functionobject(){this.color ="red";}object.prototype = {a:1,b:2,c:3};varobj =newobject();for(varpropinobj) {console.log(prop);// "color" "a" "b" "c"}for(varpropinobj) {if( obj.hasOwnProperty(prop)){console.log(prop);// "color"} }console.log(Object.keys(obj));//["color"]

前端学习群:543761540  点击链接加入群【前端交流总群③】:https://jq.qq.com/?_wv=1027&k=47bGc0u

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

推荐阅读更多精彩内容

  • 1.从 ECMAScript 5 开始,有三种原生的方法用于列出或枚举对象的属性: for...in: 该方法依次...
    07120665a058阅读 7,260评论 0 3
  • 此文章用于归纳Object的所有方法 在JavaScript中,object是所有对象的基础(原型链的顶端),所以...
    moonburn阅读 674评论 0 5
  • 本篇主要介绍JS中常用Object的属性方法。 delete 操作 in 运算符 obj.hasOwnProper...
    boySpray阅读 2,059评论 0 2
  • 1.属性的简洁表示法 允许直接写入变量和函数 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量...
    雨飞飞雨阅读 1,180评论 0 3
  • 这周成长记录的最大收获,就是给了我足够多的信心,我正在路上,走在我前面的人告诉我前面有一大片梅子林,而且,我坚信那...
    封笔ing阅读 191评论 0 0