繁体   English   中英

为什么将 function object 传递给 Object.keys() 返回空数组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM