我有以下模块,有两种方法,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
属性。
答案 0 :(得分:2)
模块定义后,您需要执行以下操作:
Module.Utils = Module.Utils || {};
Module.Utils.C = function(){
console.log("C");
};
第一行检查Module.Utils是否已经定义,如果不是,则定义它。然后下一部分分配函数C。
如果您尝试执行Module.Utils.C = function(){ console.log("C"); };
,则会收到有关未定义Module.Utils的错误。
我在这里创建了一个小提琴,显示它有效:http://jsfiddle.net/u5R4E/
答案 1 :(得分:0)
您可以动态添加方法:
Module.Utils.C = function(){
console.log("C");
};