メインのhtmlアプリケーションで定義されたスクリプトファイルの順序が重要であることを考慮して、異なる名前空間からのクラスのインスタンスまたはインスタンス変数を相互参照する方法はありますか?実際、2つの異なるクラスインスタンスを相互参照する可能性があるかどうかを知りたいです。1つは異なる名前空間で定義された参照を指し、もう1つは2番目のクラスで定義された変数が最初のインスタンスを指します。
main.js
別の名前空間で定義されたいくつかのインスタンス変数を使用するクラスを定義するファイルがあるとします。たとえばparticle.js
、で、同時にMain
クラスpublic変数を指す変数を定義します。
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
コンソールでエラーが発生しました。たとえば、Require.jsでAMDを使用して実際のクラスのモジュールをシミュレートすることは可能ですが、今はAMDで中継したくありません。