使用Google Closure编译器是否可以在两个文件中定义一个类?例如,如果我自动生成一个类并希望为用户输入的代码保留另一个类:
在MyClass.AutoGenerated.js
中goog.provide("MyClass");
MyClass = function() {
}
MyClass.prototype.SomeMember = 15;
然后在MyClass.js中,继续声明成员和函数:
MyClass.prototype.AnotherMember = 15;
MyClass.prototype.SomeAwesomeFunction = function() {};
答案 0 :(得分:4)
只要文件订购正确,这不是问题。如果可以在填写原型之前实例化类,那么排序可能会很棘手。
答案 1 :(得分: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方法使用的标识符。