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