我有一个很大的javascript类,有一堆存储在单个js文件中的方法。这种方法可以在逻辑上分类,如常用方法,过滤数据的方法,导航方法等。现在我希望这个类被单独的文件拆分,每个文件都包含自己的特定类别方法,并将所有属性和常用方法保留在当前文件中。简而言之,我需要使用c#partial
关键字。
我想避免使用prototype
,因为这意味着我必须为class.prototype.functionname = function () { ... }
这样看起来不太好的每个函数键入类名。
更新:这是我班级的样子
function MyClass() {
var self = this;
self.common = function() {...}
self.filterData = function() {...}
self.navigate = function() {...}
}
我不知道如何使用原型或扩展程序正确处理self
答案 0 :(得分:2)
如果你的班级没有使用原型,你几乎没有机会 - 这是一个很大的功能。但是,无论如何都不应该存在这样的大功能,你确定你需要它成为一个类(有多个实例)吗?然后你应该尽可能地将函数移动到原型。如果没有,单身对你来说会更有意义,这实际上只不过是一个对象文字。您还可以查看[revealing] module pattern,这是您需要的(或其中一种) - (子)模块通常可以轻松地跨不同文件传播,可能使用依赖关系跟踪加载器。
如果是,您可以轻松将其拆分为单个部分。这并不意味着您需要重复class.prototype.… = …
,您可以使用辅助函数,例如extend
MyFavLibrary.extend(class.prototype, {
functionname: function functionname() {…},
…
});
或简单的IEFE封闭:
(function(proto) {
// even some place for static, private helper functions
proto.functionname = functionname() {…};
…
})(class.prototype);