【发布时间】:2012-07-09 08:32:54
【问题描述】:
考虑到主 html 应用程序中定义的脚本文件的顺序很重要,是否有一种方法可以交叉引用来自不同命名空间的类的实例或实例变量。实际上我想知道是否有可能交叉引用两个不同的类实例,一个指向在不同命名空间中定义的引用,另一个在第二个类中定义的变量指向第一个。
假设我有一个 main.js 文件,我在其中定义了一个使用在另一个命名空间中定义的一些实例变量的类,比如说在 particle.js 中,其中在同时我定义了一个指向Main类公共变量的变量。
var Main = (function() {
var p = new Particle();
this.draw = true;
this.width = 800;
this.height = 600;
function print() {
console.log(p.width, ':', p.height);
}
return {
draw : this.draw,
width : this.width,
height : this.height,
print : print
}
})();
function Particle() {
this.width = Main.width;
this.height = Main.height;
this.print = function() {
console.log(this.width, ':', this.height);
}
}
var p = new Particle();
p.print();
Main.print();
...在*.html 中,javascript 文件的顺序为:
<script src = 'main.js'></script>
<script src = 'particle.js'></script>
实际上,如果您在 firebug 上尝试此代码,它会按预期工作,但在我的实际应用程序中使用相同的逻辑,这非常复杂,我在控制台中收到 Main is undefined 错误。我知道可以使用 AMD 和 Require.js 来模拟真实的类模块,但我现在不想继续使用 AMD。
【问题讨论】:
标签: javascript module design-patterns cross-reference