0
function Engineer (name, projs, mach) {
    this.base = WorkerBee;
    this.base(name, "engineering", projs);
    this.machine = mach || "";
}
Engineer.prototype = new WorkerBee;

var jane = new Engineer("Doe, Jane", ["navigator", "javascript"], "belau");

这来自 Mozilla 示例页面。为什么新的新 WorkerBee 没有括号?如果 WorkerBee 构造函数有参数,我们是否需要在这一行中将它们传递给?

Engineer.prototype = new WorkerBee(BaseClassConstructorArgument1,2...)

我遇到了这个问题:JS 提示:缺少 '()' 调用构造函数。

所以我现在想知道,干净的解决方案会是什么样子。

4

1 回答 1

3

使用关键字调用构造函数时,括号是可选的new,尽管一些 linter 会警告您。但是完全可以使用new WorkerBee而不是new WorkerBee()

如果要传递参数,自然需要括号。这就是为什么有些人认为最好总是使用转义来保持一致性(通常是编写 lint 规则的同一个人)。

但是选择完全取决于您作为程序员。

于 2012-12-11T09:14:57.263 回答