Object.getOwnPropertyNames VS Object.keys

该文章由 leevare 发布于 ,归类于 Javascript

当需要获取一个对象中所有的键时,可以使用Object.keys()轻松获取键数组,但是,使用Object.getOwnPropertyNames也可以达到相同的目的。

const obj = { a: 4, b: 2, c: 3 };
console.log(Object.getOwnPropertyNames(obj)); //[ 'a', 'b', 'c' ]
console.log(Object.keys(obj)); //[ 'a', 'b', 'c' ]

可见两者输出的结果一致,但是这两个方法有什么区别呢?

看如下的示例

const arr = [1, 2, 3, 4];
console.log(Object.getOwnPropertyNames(arr)); //[ '0', '1', '2', '3', 'length' ]
console.log(Object.keys(arr)); //[ '0', '1', '2', '3' ]

从这个例子中可以看到明显的不同,使用Object.getOwnPropertyNames可以获取所有的键值,包括不可枚举的属性,而Object.keys却不可以获取非枚举的属性。所以,在特定的场景使用特定的方法即可。

如果觉得我的文章对您有用,请您随意打赏。您的支持将鼓励我更加努力创作!

相关文章:

说点什么

avatar
300
  Subscribe  
提醒