如何在javascript中将方法导入工作范围?

如何在javascript中将方法导入工作范围?,javascript,Javascript,这是我的代码片段 class-WebWorker{ 建造师(工人){ const code=worker.toString(); const blob=新blob([“(“+code+”)()”); 返回新的Worker(URL.createObjectURL(blob)); } } var thisWebWorker=新的WebWorker(()=>{ self.addEventListener('message',函数(e){ //我想在这里运行sayHi方法 () }) }); 让我们说

这是我的代码片段

class-WebWorker{
建造师(工人){
const code=worker.toString();
const blob=新blob([“(“+code+”)()”);
返回新的Worker(URL.createObjectURL(blob));
}
}
var thisWebWorker=新的WebWorker(()=>{
self.addEventListener('message',函数(e){
//我想在这里运行sayHi方法
()
})
});
让我们说你好=()=>{
console.log('Hi')
}

thisWebWorker.postMessage('runWebWorker')
由于传递给构造函数的函数将被字符串化,因此引用的任何内容都需要在该函数中自包含;要引用的任何内容都必须在其范围之外,否则它将不会包含在字符串和blob中,并且工作程序将无法运行它

在您传递的函数中定义
sayHi

class-WebWorker{
建造师(工人){
const code=worker.toString();
const blob=新blob([“(“+code+”)()”);
返回新的Worker(URL.createObjectURL(blob));
}
}
var thisWebWorker=新的WebWorker(()=>{
self.sayHi=()=>{
console.log('Hi')
}
self.addEventListener('message',函数(e){
()
})
});

thisWebWorker.postMessage('run WebWorker')
hi@CertainPerformance我在寻找一种不使用外部js文件的导入方法,并且不在web worker中声明此方法的方法,可以这么说,hi是可重用的方法,不仅可以在web worker侦听器中使用,还有一种方法吗?没有好的方法。将其定义为包含在stringized函数的范围内,或者拥有一个外部文件,是实现这一点的唯一两种体面的方法。从技术上讲,可以将来自家长的消息发布给工作人员,并让工作人员评估(或类似)消息,但这真的很难看,我不推荐这样做。