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却不可以获取非枚举的属性。所以,在特定的场景使用特定的方法即可。

如果您觉得本文对您有用,欢迎捐赠或留言~
微信支付
支付宝

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注