簡體   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