【发布时间】:2023-03-13 19:06:01
【问题描述】:
我正在阅读来自 Mozilla 的 Javascript Guide 当他们将 JS 与 Java 进行对比时,这让我想到,Java 代码很容易与他自己文件中的每个类分开。经过进一步搜索,我了解到在具有命名空间和模块模式的 JS 中也可以实现相同的功能 - 我弄乱了它但很困惑(尤其是将 File1.js 中声明的构造函数调用到 File2.js 中)
所以这是层次结构:
但我就是不知道如何让它正常工作
我如何简单地从
//employe.js
function Employee () {
this.name = "";
this.dept = "general";
}
function Manager () {
this.reports = [];
}
Manager.prototype = new Employee;
function WorkerBee () {
this.projects = [];
}
WorkerBee.prototype = new Employee;
function SalesPerson () {
this.dept = "sales";
this.quota = 100;
}
SalesPerson.prototype = new WorkerBee;
到这里:
// employe.js
function Employee () {
this.name = "";
this.dept = "general";
}
// Manager.js
function Manager () {
this.reports = [];
}
Manager.prototype = new Employee;
// WorkerBee.js
function WorkerBee () {
this.projects = [];
}
WorkerBee.prototype = new Employee;
// SalesPerson.js
function SalesPerson () {
this.dept = "sales";
this.quota = 100;
}
SalesPerson.prototype = new WorkerBee;
【问题讨论】:
-
您所要做的就是以正确的顺序包含文件。
-
@FelixKling:由于代码只声明了构造函数,并没有创建任何东西,因此文件包含的顺序甚至无关紧要。
-
@Guffa:确实如此,他们正在为原型继承创建一个实例,例如
Manager.prototype = new Employee;. -
@FelixKling:哦,你是对的。我站得更正了。它们确实需要以正确的顺序包含在内。
-
如果使用现代的
classes,我这样解决了这个问题:stackoverflow.com/a/62142995/1599699
标签: javascript class dependencies hierarchy