首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Object.getOwnPropertyNames vs Object.keys

Object.getOwnPropertyNames vs Object.keys
EN

Stack Overflow用户
提问于 2014-03-26 18:43:00
回答 3查看 63.4K关注 0票数 266

javascript中的Object.getOwnPropertyNamesObject.keys有什么不同?另外,也有一些例子将受到赞赏。

EN

回答 3

Stack Overflow用户

发布于 2017-07-12 03:17:05

另一个区别是在数组的情况下,Object.getOwnPropertyNames方法将返回一个额外的属性,即length

代码语言:javascript
复制
var x = ["a", "b", "c", "d"];
Object.keys(x);  //[ '0', '1', '2', '3' ]
Object.getOwnPropertyNames(x);  //[ '0', '1', '2', '3', 'length' ]
票数 29
EN

Stack Overflow用户

发布于 2020-06-21 19:39:35

如前所述,.keys不返回不可枚举的属性。

举个例子,其中一个缺陷是Error对象:它的一些属性是不可枚举的。

因此,当console.log(Object.keys(new Error('some msg')))产生[]时,console.log(Object.getOwnPropertyNames(new Error('some msg')))产生["stack", "message"]

代码语言:javascript
复制
console.log(Object.keys(new Error('some msg')));
console.log(Object.getOwnPropertyNames(new Error('some msg')));

票数 1
EN

Stack Overflow用户

发布于 2016-06-07 23:41:08

另一个区别是(至少对于nodejs) "getOwnPropertyNames“函数不保证键的顺序,这就是为什么我通常使用" keys”函数:

代码语言:javascript
复制
    Object.keys(o).forEach(function(k) {
      if (!o.propertyIsEnumerable(k)) return;
      // do something...
    });
票数 -6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22658488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档