5

javascriptモジュールに頭を悩ませようとしていますが、モジュールをさらにサブモジュールに分割する方法がわかりません。ネストされた関数はパフォーマンスの関係であまり良いアイデアではないことを読みましたが、モジュール内の関数を分割するにはどうすればよいですか?たとえば、次のモジュールがあるとします。

var Editor = {};

Editor.build = (function () {
    var x = 100;
    return {
        bigFunction: function () {
            // This is where I need to define a couple smaller functions 
            // should I create a new module for bigFunction? If so, should it be nested in Editor.build somehow?
        }
    };
})();

bigFunctionはEditor.buildにのみ関連しています。bigFunctionを構成する小さな関数をプロトタイプのbigFunctionオブジェクトにアタッチする必要がありますか?それが理にかなっているかどうかさえわかりません。

var Editor = {};

Editor.build = (function () {
    var x = 100;
    return {
        bigFunction: function () {
            bigFunction.smallFunction();
            bigFunction.prototype.smallFunction = function(){ /*do something */ };   
            // not sure if this even makes sense
        }
    };
})();

誰かが私をここで正しい方向に投げてくれませんか?オンラインには誤解を招く情報がたくさんあり、この種のモジュール化に対処する方法についての明確なガイドが必要です。

ありがとうございました。

4

1 に答える 1

1

入力の名前を作成するために使用するスニペットは次のとおりです。

    var dynamicCounter = 0;
    //custom dropdown names
    var createContainerNames = function () {
        function Names() {
            this.id = "Tasks_" + dynamicCounter + "__ContainerId";
            this.name = "Tasks[" + dynamicCounter + "].ContainerId";
            this.parent = "task" + dynamicCounter + "Container";
        }
        Names.prototype = { constructor: Names };
        return function () { return new Names(); };
    } ();

そして、私はそれを使用します:

    var createdNames = createContainerNames();
    var createdId = createdNames.id;
    dynamicCounter++;
    var differentNames = createContainerNames();
    var differentId = differentNames.id;

別のアプローチはこれを行うことです:

var NameModule = function(){

 //"private" namemodule variables
 var priv1 = "Hello";

 //"private namemodule methods
 function privMethod1(){
  //TODO: implement
 }

 //"public namemodule variables
 var pub1 = "Welcome";

 //"public" namemodule methods
 function PubMethod(){
  //TODO: pub
 } 

 return {
  pub1 : pub1,
  PubMethod: PubMethod
 };

そしてそれを使用するには

var myPubMethod = new NameModule();
myPubMethod.PubMethod();
var pubVar = myPubMethod.pub1;

編集

このアプローチを取ることもできます:

var mod = function(){
 this.modArray = [];
};

mod.prototype = {

 //private variables
 modId: null,

 //public method
 AddToArray: function (obj) {
    this.modArray.push(obj);
 }
}
于 2012-06-27T23:20:38.773 に答える