var foo = (function CoolModule(id) {
function change() {
//修改公共API
publicAPI.identify = identify2;
}
function identify1() {
console.log(id);
}
function identify2() {
console.log(id.toUpperCase());
}
var publicAPI = {
change: change,
identify: identify1
}
return publicAPI
})("foo module");
foo.identify();// foo module
foo.change();
foo.identify();// FOO MODULE
通过在模块实例的内部保留对公共API对象的内部引用,可以从内部对模块实例进行修改,,包括添加或删除方法和属性,以及修改它们的值。