![](/img/trans.png)
[英]Why passing function object to Object.keys() returns empty array?
[英]Why returns Object.keys() an object (looks like array)?
我遇到過這個:
var stdin = {123:1,423:1};
var stdout = Object.keys(stdin);
console.log(stdout); //["123", "423"]
console.log(typeof(stdout)); //object
console.log(stdout[0]) //123
15.2.3.14 Object.keys(O)
使用參數O調用keys函數時,將執行以下步驟:
... 6.返回數組 。
在Windows 7上測試Chrome和Firefox。
到底是怎么回事? 應該是數組,看起來像數組給我, 是對象嗎?
編輯:
typeof() 。 Arrgh。
你為什么說這是一個對象? 在Array上運行typeof將始終返回'object'。
var arr = [1,2,3];
typeof arr --> "object"
試試吧
Array.isArray(arr) --> true
這是你想要的測試。
var stdin = {123:1,423:1};
Array.isArray(stdin) --> false
數組是對象。
嘗試在控制台中輸入typeof([1,2,3])
- 你也可以得到object
作為結果。
現在,如果你鍵入Object.prototype.toString.call( [1,2,3] )
,你將得到[object Array]
,這有點用處(你將獲得與Object.keys
的返回值相同的結果) Object.keys
)。
如果你想要一個布爾結果,只需使用Array.isArray
(參見這個相關的答案 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.