CreateListFromArrayLike called on non-object 報錯的解決方法
出版:2017-05-01
如果你遇到 CreateListFromArrayLike 的報錯的話,那麼可以看看代碼裡面調用 apply 方法的地方,call 是用0個或者更多的參數,而 apply 則是用一個數組。
Math.max.apply(null, 1, 2, 3);
// Uncaught TypeError: CreateListFromArrayLike called on non-object
Math.max.call(null, 1, 2, 3); // 3
Math.max.apply(null, [1, 2, 5, 10]); // 10
當調用 Function.prototype.apply
的時候,它會調用內置抽象操作 CreateListFromArrayLike。
CreateListFromArrayLike ( obj [ , elementTypes ] )
CreateListFromArrayLike 是一個ECMAScript的內置抽象操作 (Abstract Operation),用於建立一個 List 的值,它的元素由類似數組的對象的索引屬性提供。elementTypes
是一個 List,只允許自身建立的 list
擁有ECMAScript Language 類型的值,比如undefined, null, boolean
等。在調用的時候,它會執行以下步驟:
elementTypes
的話,它會被定義為 Undefined, Null, Boolean, String, Symbol, Number, Object 。Type(obj)
的類型不是Object,拋出TypeError 錯誤。len
為obj
的length。list
。index
為0indexName
為!ToString(index)next
為?Get(obj, indexName)Type(next)
的類型不存在於elementType
裡面,拋出 TypeError 錯誤。list
的最後增加next (list.push(next)
)index
的值加1list
Calpa 是一個四天工作的系統架構師,日常幫助客戶構建一站式網站應用,手機應用,雲端架構。
2023 年 9 月,Calpa 收到來自國內外不同 Web3 團隊的邀請,參加韓國的 KBW 2023 和新加坡的 TOKEN 2049 活動。十二月份,Calpa 將參加台北區塊鏈週的 Hackathon 比賽。
Calpa 擅長運用各種前沿技術,包括 TypeScript、React.js 和 Vue.js,開發具有 Responsive Web Design 的網站。另外,他透過運用 aws-cdk 和 TypeScript 技術的融合,實現了基於雲端的「基礎即代碼」(Infrastructure as Code)部署策略,建立了多套高效且具有可伸縮性的全端架構。
同時,Calpa 積極參與各個社群,活躍於香港和台灣的開源社區,分享前沿知識。他曾在 2019 年的香港開源大會中擔任重要講者,為聽眾提供寶貴的工作經驗和深刻見解。此外,Calpa 在 GitHub 上公開分享了個人博客程式碼,已獲得超過 300 顆星星和 60 個分支。
如果您對系統架構有任何問題,或需要進一步交流,請隨時聯絡 Calpa,他非常歡迎討論。