我目前有一个Tampermonkey脚本,它带有一系列上下文相关的函数,这些函数作为选项在特定页面上运行时提供。
我的代码的简化版本是:
window.func1 = function func1() {...}
window.func2 = function func2(a) {...}
window.func3 = function func3(a, b) {...}
我希望有一些功能可以使用当前拥有的脚本,并为我提供可用功能的列表,大致类似于:
>> getAvailableFunctions()
<< func1, func2, func3
我一直在研究Object.getOwnPropertyNames
方法,但是我似乎无法使用Tampermonkey将其淘汰。
我可以输入一些信息吗?
谢谢!
答案 0 :(得分:0)
您可以尝试这样的事情:
Object.entries(window).flatMap(([k, v]) => typeof v === "function" ? k : [])
Object.entries
得到一个键值对数组,而flatMap
在这里用作filter
+ map
的组合。这等效于:
Object.entries(window).filter(a => typeof a[1] === "function").map(([k]) => k)
您也可以尝试排除此类本机功能(在FF和Chrome上测试):
Object.entries(window)
.flatMap(([k, v]) => typeof v === "function" && !/{\s*\[native code]\s*}/.test(v) ? k : [])