Object.getOwnPropertyNames VS Object.keys
当需要获取一个对象中所有的键时,可以使用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
却不可以获取非枚举的属性。所以,在特定的场景使用特定的方法即可。
如果您觉得本文对您有用,欢迎捐赠或留言~
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=1067