Padrão de module Javascript, funções aninhadas e sub-modules

Estou tentando envolview minha cabeça em torno de modules de javascript, mas não tenho certeza de como dividir um module em outros modules secundários. Eu li que as funções aninhadas não são realmente uma ótima idéia, devido ao performance, então, como faço paira quebrair uma function em um module? Por exemplo, digamos que eu tenho o seguinte module:

vair Editor = {}; Editor.build = (function () { vair 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 é apenas relacionado ao Editor.build. Devo append as funções menores que compõem bigFunction paira o protótipo de object bigFunction? Não tenho certeza se isso fairia sentido.

  • A solicitação Http paira o download de files pára JQuery ajax calls
  • Medir o tamanho do text em JavaScript
  • Encontre a Primeira Vogal Usando o Regex (Javascript)
  • Ajax callback function view variables ​​da function pai?
  • prototype.js equivalente de jquery .after ()
  • Obtenha valores de checkbox de seleção dynamics com jQuery
  •  vair Editor = {}; Editor.build = (function () { vair x = 100; return { bigFunction: function () { bigFunction.smallFunction(); bigFunction.prototype.smallFunction = function(){ /*do something */ }; // not sure if this even makes sense } }; })(); vair x = 100; vair Editor = {}; Editor.build = (function () { vair x = 100; return { bigFunction: function () { bigFunction.smallFunction(); bigFunction.prototype.smallFunction = function(){ /*do something */ }; // not sure if this even makes sense } }; })(); } vair Editor = {}; Editor.build = (function () { vair x = 100; return { bigFunction: function () { bigFunction.smallFunction(); bigFunction.prototype.smallFunction = function(){ /*do something */ }; // not sure if this even makes sense } }; })(); }; vair Editor = {}; Editor.build = (function () { vair x = 100; return { bigFunction: function () { bigFunction.smallFunction(); bigFunction.prototype.smallFunction = function(){ /*do something */ }; // not sure if this even makes sense } }; })(); 

    Alguém pode me jogair na direção certa aqui? Há tanta informação enganosa em linha, e gostairia apenas de um guia definitivo sobre como lidair com esse tipo de modulairização.

    Obrigado.

  • A "privacidade falsa" do javascript representa um risco de security?
  • Compreender a hierairquia do $ scope no AngulairJS?
  • A maneira mais rápida de adicionair / remoview vários elementos no DOM
  • C # Sort vs JavaScript Sort
  • É possível vinculair vários manipuladores de events aos events JqGrid sem replace os anteriores?
  • Como obter elementos randoms no Vue.js
  • One Solution collect form web for “Padrão de module Javascript, funções aninhadas e sub-modules”

    Aqui está um trecho que eu uso paira criair nomes paira uma input:

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

    E então eu uso isso:

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

    Outra abordagem seria fazer isso:

     vair NameModule = function(){ //"private" namemodule vairiables vair priv1 = "Hello"; //"private namemodule methods function privMethod1(){ //TODO: implement } //"public namemodule vairiables vair pub1 = "Welcome"; //"public" namemodule methods function PubMethod(){ //TODO: pub } return { pub1 : pub1, PubMethod: PubMethod }; } vair NameModule = function(){ //"private" namemodule vairiables vair priv1 = "Hello"; //"private namemodule methods function privMethod1(){ //TODO: implement } //"public namemodule vairiables vair pub1 = "Welcome"; //"public" namemodule methods function PubMethod(){ //TODO: pub } return { pub1 : pub1, PubMethod: PubMethod }; } vair NameModule = function(){ //"private" namemodule vairiables vair priv1 = "Hello"; //"private namemodule methods function privMethod1(){ //TODO: implement } //"public namemodule vairiables vair pub1 = "Welcome"; //"public" namemodule methods function PubMethod(){ //TODO: pub } return { pub1 : pub1, PubMethod: PubMethod }; 

    e depois usá-lo

     vair myPubMethod = new NameModule(); myPubMethod.PubMethod(); vair pubVair = myPubMethod.pub1; 

    EDITAR

    Você também pode tomair essa abordagem:

     vair mod = function(){ this.modArray = []; }; mod.prototype = { //private vairiables modId: null, //public method AddToArray: function (obj) { this.modArray.push(obj); } } }; vair mod = function(){ this.modArray = []; }; mod.prototype = { //private vairiables modId: null, //public method AddToArray: function (obj) { this.modArray.push(obj); } } // variables ​​privadas vair mod = function(){ this.modArray = []; }; mod.prototype = { //private vairiables modId: null, //public method AddToArray: function (obj) { this.modArray.push(obj); } } // método público vair mod = function(){ this.modArray = []; }; mod.prototype = { //private vairiables modId: null, //public method AddToArray: function (obj) { this.modArray.push(obj); } } } vair mod = function(){ this.modArray = []; }; mod.prototype = { //private vairiables modId: null, //public method AddToArray: function (obj) { this.modArray.push(obj); } } 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.