1

我有一个 javascript 对象,我向其中添加了许多原型函数,这些函数主要以某种方式依赖于对象的成员。

myForm() {
    this.property1 = "Prop1";
    this.property2 = "Prop2";
}

myForm.prototype.loadValues = function(){ /*...*/);

myForm.prototype.setValues = function(){ /*...*/);

myForm.prototype.doStuff = function(){ /*...*/);

有足够多的函数/代码,目前大约有 4000 行,每次我必须使用开发工具/firebug 调试它时,它都让我发疯。我正在考虑这样拆分。

myForm.js -

myForm(){
    this.property1 = "Prop1";
    this.property2 = "Prop2";
    new myFormLoadActions();
    new myFormSetActions();
    new myFormDoStuffActions();
}

myFormLoadActions.js

myFormLoadActions(){
    myForm.prototype.loadValues = function(){ /*...*/);
}

myFormSetActions.js

myFormSetActions(){
    myForm.prototype.setValues = function(){ /*...*/);
}

myFormDoStuffActions.js

myFormDoStuffActions(){
    myForm.prototype.doStuff = function(){ /*...*/);
}

我已经尝试过了,它似乎可以正常工作。这是处理大量原型函数的推荐方法,还是有更好的方法?

4

3 回答 3

1

保留您的旧代码,但只需将原型分配分散到多个文件中:

文件 0

myForm() {
    this.property1 = "Prop1";
    this.property2 = "Prop2";
}

文件 1

myForm.prototype.loadValues = function(){ /*...*/);

文件 2

myForm.prototype.setValues = function(){ /*...*/);

正如我在评论中指出的那样,这只是一个班级做得太多的问题,但你意识到这一点并且只想要更小的文件,所以你去:)

于 2012-06-14T15:16:31.230 回答
0

我会推荐这种方法,因为它对我来说看起来更整洁,而且调试起来也不难。

myForm() {
    this.property1 = "Prop1";
    this.property2 = "Prop2";
}

myForm.prototype = {
    loadValues: function(){ /*...*/),
    setValues: function(){ /*...*/),
    doStuff: function(){ /*...*/),
    .
    .
    .
}

另一种方法:

myForm(){
    this.property1 = "Prop1";
    this.property2 = "Prop2";
    addFunctionsToPrototype();
}
addFunctionsToPrototype(){
    myForm.prototype.loadValues = function(){ /*...*/);
    myForm.prototype.setValues = function(){ /*...*/);
    myForm.prototype.doStuff = function(){ /*...*/);
}
于 2012-06-14T14:44:14.230 回答
0

对我来说,这看起来有点奇怪。我的意思是,您正在为它们的“副作用”构造对象(将属性添加到不同对象的原型),然后立即将它们扔掉:

myForm(){
    ...
    new myFormLoadActions();
    ...
}

您“新建”的对象在实例化后实际上并没有做任何事情,并且您没有持有对其实例的引用,因此最好是一个可调用函数:

myForm(){
    ...
    myFormLoadActions(this);
    ...
}

这只是我的拙见,请随意争论!

于 2012-06-14T14:39:34.897 回答