来自 Java (OOP) 世界,我习惯于类、继承和多线程。现在,对于我在 JavaScript 领域的小小旅行,我尝试在适用的情况下利用这些范式和模式。阅读:使用原型(“类”/对象)和 WebWorkers 进行并行执行。但是,这种情况不起作用...
启动工作人员的 HTML 站点:
<html>
<head>
<script>
var worker = new Worker("worker.js");
worker.onmessage(event) {
// here be fancy script
}
worker.postMessage("run, worker, run!");
</script>
</head>
...
</html>
HTML 调用的 Worker(“worker.js”):
self.loadScripts("handler.js");
var handler = null;
self.onmessage = function(event) {
if(!handler) {
handler = new Handler();
}
handler.compute();
}
工人调用的处理程序(“handler.js”):
function Handler() {
}
Handler.prototype = {
compute: function() {
this.doSomething(); // <-- ERROR! "this" points to the worker context,
// not to the Handler instance. So "doSomething" is
// undefined. However, the following line would work:
// Handler.prototype.doSomething();
},
doSomething: function() {
// More code here
}
}
JavaScript 原型设计和“继承”是否意味着以这种方式工作?我应该总是使用原型属性而不是这个吗?如果我想访问 this.myProperty 而不是函数怎么办?
另外:是否有任何合理的方法可以将 this 绑定到构造函数中的 Handler 实例?至少代码没有被冗长的 Handler.prototype 引用弄得乱七八糟。
谢谢!