You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何向Object.keys()传入函数对象会返回空数组?

为什么Object.keys()不返回函数对象的属性名?

首先明确:函数确实是带有属性的对象,但Object.keys()只会返回对象自身的可枚举属性,这是核心原因。

  • 函数的内置属性(比如你例子里的arguments,还有length、name这类)都是不可枚举的属性,所以不会被Object.keys()筛选出来。如果要查看函数对象的所有自身属性(无论可枚举与否),可以用Object.getOwnPropertyNames(),比如执行Object.getOwnPropertyNames(f),就能看到这些内置属性的名字了。
  • 另外补充一点:现在ES规范里已经不推荐通过f.arguments这种方式访问arguments了,正确的做法是在函数内部直接使用arguments变量。
  • 你可以做个测试:给函数手动添加一个可枚举属性,比如f.myCustomProp = 'test',这时候再执行Object.keys(f),就会返回["myCustomProp"],验证了只有可枚举的自身属性才会被返回。

内容的提问来源于stack exchange,提问作者cat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:39:25