向现有模块化模式对象添加新方法

Adding a new method to existing modular pattern object

本文关键字:对象 添加 新方法 模式 模块化      更新时间:2023-09-26

我有以下两个方法模块,A()B():

var Module = (function() {
    function A(){
      console.log("Module: A");
      B();
    };
    function B(){
       console.log("Module: B");
       Module.Utils.C(); /* Here is the problem */
    };
    return {
      A:A,
      B:B
    }
} ());

假设我想添加一个新方法C()

function C(){
      console.log("C");
    };

…到上面的模块,而不触及它,即,我不想改变Module的现有代码,但扩展它有新的C属性。

您需要在模块定义之后执行以下操作:

Module.Utils = Module.Utils || {};
Module.Utils.C = function(){
  console.log("C");
};

第一行检查Module。Utils已经定义,如果没有定义则定义它。然后下一部分分配函数c。

如果你尝试只做Module.Utils.C = function(){ console.log("C"); };,那么你会得到一个关于模块的错误。Utils未定义

我在这里创建了一个小提琴来显示它的工作:http://jsfiddle.net/u5R4E/

您可以动态地为对象添加方法:

Module.Utils.C = function(){
  console.log("C");
};