通常在使用JavaScript時會遇到一些愚蠢的問題。一個這樣的問題是在對象類型之間辨別。概念:在JavaScript中的陣列,僞陣列和對象之間進行區分
有沒有辦法用這個功能創建一個函數? 見下圖:
_discern = function() { [ function code ] };
_discern({}); // Logs: Object
_discern([]); // Logs: Array
_discern(document); // Logs: Pseudo-Object
_discern(document.querySelectorAll("*")); // Logs: Pseudo-Array
我已經嘗試過創建檢查數組相似的功能,但我所希望的,沒有工作的好:
isArrLike = function (_) {
_[0] = 0; return [].slice.call(_).length >= Object.values(_).length;
};
而且我我已經嘗試將該行爲用於其他功能。所有失敗。有沒有辦法?
如何定義「僞對象」?你的意思是[*異國情調的對象*](http://www.ecma-international.org/ecma-262/7.0/index.html#sec-exotic-object)?有[* host object *](http://www.ecma-international.org/ecma-262/5.1/index.html#sec-4.3.8)的概念,但它已被刪除。一個好的開始就是提供一個明確定義什麼測試或特徵定義了每種類型的對象。 – RobG