我通过简单的
获得了一些主要html中包含的javascript文件<script src ="script.js"></script>
<script defer src ="anotherscript.js"></script>
script.js定义了一系列es6类,如
class TestPong1 {
doSomething() {
// doSomething
}
}
class TestPong2 {
doSomethingElse() {
// doSomethingElse
}
}
anotherscript.js应该能够动态查找之前定义的所有类,创建它们并一个接一个地执行这些方法。
不幸的是,我已经遇到了第一个问题:如何获取指定的所有类的名称&#34;以上&#34; anotherscript.js。我尝试了Object.getOwnPropertyNames(this);
,它适用于函数,但不适用于类。
想要的想法:
function findAllClassNamesInScope() {
// ??? should return list of classes in scope. eg ['TestPong1', 'TestPong2']
}
谢谢!
答案 0 :(得分:-1)
您可以选择上一个script
元素,使用fetch()
请求script
,解析.text()
回复,就分割文字的结果调用window.eval
,在for..of
循环处迭代数组,使用class
运算符
new
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())
}
});