javascript中的Object.getOwnPropertyNames
和Object.keys
有什么不同?另外,也有一些例子将受到赞赏。
发布于 2017-07-12 03:17:05
另一个区别是在数组的情况下,Object.getOwnPropertyNames
方法将返回一个额外的属性,即length
。
var x = ["a", "b", "c", "d"];
Object.keys(x); //[ '0', '1', '2', '3' ]
Object.getOwnPropertyNames(x); //[ '0', '1', '2', '3', 'length' ]
发布于 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"]
console.log(Object.keys(new Error('some msg')));
console.log(Object.getOwnPropertyNames(new Error('some msg')));
发布于 2016-06-07 23:41:08
另一个区别是(至少对于nodejs) "getOwnPropertyNames“函数不保证键的顺序,这就是为什么我通常使用" keys”函数:
Object.keys(o).forEach(function(k) {
if (!o.propertyIsEnumerable(k)) return;
// do something...
});
https://stackoverflow.com/questions/22658488
复制相似问题