[英]Why passing function object to Object.keys() returns empty array?
那么,js 中的函数就是带有一些键的对象,对吧? 我正在尝试遍历它们,但我得到的是空列表:
function f(a) {
console.log(Object.keys(f)) //prints []
console.log(f.arguments) //key "arguments" exists and prints Arguments object
}
任何解释为什么 Object.keys() 不返回 function object 的密钥?
Object.keys
将仅列出可枚举的属性。 arguments
属性不可枚举,您可以查看是否使用getOwnPropertyDescriptor
。
该属性存在,但
function f() { } console.log(Object.getOwnPropertyDescriptor(f, 'arguments'));
要获取所有自有属性键(不包括符号)的列表,包括不可枚举的键,您可以使用Object.getOwnPropertyNames
。
function f() { } console.log(Object.getOwnPropertyNames(f));
在这里,给你
[
"length",
"name",
"arguments",
"caller",
"prototype"
]
如果直接放在 function 上的任何属性是可枚举的,则Object.keys
可能已返回属性,例如
function f() { } f.someProp = 'foo'; console.log(Object.keys(f));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.