2

Google Closure コンパイラを使用して、2 つのファイルでクラスを定義することは可能ですか? たとえば、あるクラスを自動生成し、ユーザーが入力したコード用に別のクラスを保持したい場合:

MyClass.AutoGenerated.js 内

goog.provide("MyClass");
MyClass = function() {
}
MyClass.prototype.SomeMember = 15;

次に MyClass.js で、メンバーと関数の宣言を続けます。

MyClass.prototype.AnotherMember = 15;
MyClass.prototype.SomeAwesomeFunction = function() {};
4

2 に答える 2

4

ファイルが正しく並べられている限り、これは問題ではありません。ただし、プロトタイプが入力される前にクラスをインスタンス化できる場合は、順序付けが難しくなる可能性があります。

于 2012-09-20T22:56:29.103 に答える
1

ビルド順序に依存せずに、これに近づくことがわかった唯一の方法は次のとおりです。

MyClass.js 内

goog.provide("MyClass");
MyClass = function() {
}
MyClass.prototype.SomeMember = 15;

次に、MyClass.Partial.js で、メンバーと関数の宣言を続け、.Partial で名前空間を提供します(例):

goog.require("MyClass");
goog.provide("MyClass.Partial");

MyClass.prototype.AnotherMember = 15;
MyClass.prototype.SomeAwesomeFunction = function() {};

次に、呼び出しコードは次を呼び出す必要があります。

goog.require("MyClass");
goog.require("MyClass.Partial");

両方のファイルを正しい順序で含めるため。MyClass.Partialクラスは、存在する必要はありません。goog.require および goog.provide メソッドで使用される単なる識別子です。

于 2012-10-08T19:07:41.970 に答える