查找脚本范围内定义的所有类
Find all classes defined in scope of script
我得到了一堆javascript文件包含在主html通过简单的
<script src ="script.js"></script>
<script defer src ="anotherscript.js"></script>
script.js定义了一系列es6类,如
class TestPong1 {
doSomething() {
// doSomething
}
}
class TestPong2 {
doSomethingElse() {
// doSomethingElse
}
}
anotherscript.js应该能够动态地找到之前定义的所有类,创建它们并一个接一个地执行方法。
不幸的是,我已经遇到了第一个问题:如何获得"上面"指定的所有类的名称。我尝试了Object.getOwnPropertyNames(this);
,它适用于函数,但不适用于类。
希望的想法:
function findAllClassNamesInScope() {
// ??? should return list of classes in scope. eg ['TestPong1', 'TestPong2']
}
谢谢!
您可以选择前面的script
元素,使用fetch()
请求script
,解析.text()
响应,根据分割文本的结果调用window.eval
,在for..of
循环中迭代数组,使用new
运算符调用每个class
let scripts = document.scripts;
let script = scripts[scripts.length - 2];
fetch(script.src)
.then(response => response.text())
.then(script => {
let classes = script.split(/'s(?=class)/).map(window.eval);
for (let fn of classes) {
console.log(fn.name, new fn())
}
});
plnkr http://plnkr.co/edit/745xXOinKhRkFYPN7nno?p=preview
相关文章:
- 将自定义脚本加载到Vue.js组件中
- jQuery选项卡的自定义脚本
- NPM:将多个模块和自定义脚本与browserfy相结合
- 如何将自定义脚本添加到运行javascript文件的package.json文件中
- 强循环自定义脚本不会退出
- WooCommerce AJAX在我的自定义脚本之后重新加载页面
- 在一个js文件中为不同的wordpress页面添加多个自定义脚本
- infinitescroll.js的自定义脚本回调
- '中的自定义脚本;条件'DTM中基于事件的规则部分
- PDFTron自定义脚本中应该包含哪些内容
- Meteor中的自定义脚本
- “文本”的意义是什么?在定义脚本类型时
- Paper.js如何为他们的Paperscript创建自定义脚本标签
- 标记点谷歌地图自定义脚本
- Visual Studio -为HTML模板和语法高亮显示使用自定义脚本标签类型
- 如何在CakePHP中定义脚本?
- 在浏览器中实现自定义脚本类型
- 我可以运行一些自定义脚本后ASP.. NET客户端页面验证失败
- 在adobedtm数据元素中寻找自定义脚本
- 试图让Telerik scriptreregistrar加载Telerik脚本和自定义脚本