2

是否可以使用 Google Closure 编译器在两个文件中定义一个类?例如,如果我自动生成一个类并希望为用户输入的代码保留另一个类:

在 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 回答