#如何列出JavaScript物件的所有方法
找出如何獲取包含JavaScript物件方法的陣列
我們可以使用 ‘Object.getOwnPropertyNames()’ 函數來獲取與物件相關聯的所有屬性名稱。
然後,我們可以過濾結果陣列,只包括那些屬性名稱是函數的。
我們可以通過使用typeof來判斷它是否為一個函數。
例如,以下是我們可能創建的實用程式函數:
1 | getMethods = (obj) => Object.getOwnPropertyNames(obj).filter(item => typeof obj[item] === 'function') |
這只列出在特定物件上定義的方法,而不是在其原型鏈中定義的任何方法。
要做到這一點,我們必須採取稍微不同的路線。我們必須首先迭代原型鏈並將所有屬性列在一個陣列中。然後,我們檢查每個單個屬性是否為函數。
為了確保在瀏覽原型鏈時不重複方法(例如始終存在的 constructor
),我們使用了一個Set數據結構,它確保值是唯一的:
1 | const getMethods = (obj) => { |
使用示例:
1 | getMethods("") |
tags: [“JavaScript”, “methods”, “Object.getOwnPropertyNames”, “filter”, “prototype chain”, “Set”]