我需要有关如何将常用功能编程到我的 JavaScript 应用程序中的建议。例如,有这些类:Main、Logger、App 和 Template。
Main 创建一个 App 和 Logger 的实例,然后 App 创建一个 Template 的实例。Main 将自身的引用传递给 App 的 init,App 将 Main 的引用传递给 Template 的 init。现在,无论对错,Template 都直接引用了 Main 中的 Logger 实例。这是最简单的,但它似乎不是正确的 OOP,因为对记录器的任何更改都需要对调用引用的每个类进行重复编程。
或者,Template 可以只接收对 App 的引用,该引用有一个方法来调用它对 Main 的引用,它有一个方法来调用它的 Logger 实例。这似乎更安全,可以让每个人都远离,但这也意味着 Main 将充满方法来访问 Logger 和它管理的其他类。
这里没有详细说明:我正在使用 John Resig 的 Simple JavaScript Inheritance 和 RequireJS。
示例 1:
var Main = {
init: function() {
this.logger = new Logger();
this.app = new App(this);
}
}
var Logger = {
debug: function(message) {
console.log(message)
}
}
var App = {
init: function(main) {
this.template = new Template(main);
}
}
var Template = {
init: function(main) {
main.logger.debug("Hello");
}
}
示例 2:
var Main = {
init: function() {
this.logger = new Logger();
this.app = new App(this);
}
,debug: function(message) {
this.logger.debug(message);
}
}
var Logger = {
debug: function(message) {
console.log(message);
}
}
var App = {
init: function(main) {
this.main = main;
this.template = new Template(this);
}
,debug: function(message) {
this.main.debug(message);
}
}
var Template = {
init: function(app) {
app.debug("Hello");
}
}