javascript - 动态命名空间模块模式

标签 javascript dynamic namespaces

有谁知道该模式是什么,能够创建模块模式,但能够动态设置模块所在的 namespace 。

所以代替下面的内容:-

var MODULE = (function () { 
  var my = {}, 
      privateVariable = 1; 

  function privateMethod() { 
      // ... 
  } 

  my.moduleProperty = 1; 
  my.moduleMethod = function () { 
      // ... 
  }; 

  return my; 
}());

模块可以设置为您喜欢的任何内容,我记得在截屏视频中看到过它,但不记得在哪里......

基本上我想创建一个可以分配给实现者喜欢的任何命名空间的库。

最佳答案

我认为您只需添加一个方法来设置它,然后使 MODULE 无效。

http://jsfiddle.net/yrsdR/

my.namespace = function( ns ) {
    window[ns] = my;
    window.MODULE = null;
}

然后:

window.MODULE.namespace( "myNamespace" );

window.MODULE; // null
window.myNamespace // object

或者您可以让它将模块返回到您想要的任何变量。

http://jsfiddle.net/yrsdR/1/

my.namespace = function() {
    window.MODULE = null;
    return my;
}
window.myNamespace = MODULE.namespace();

window.MODULE; // null
window.myNamespace // object

关于javascript - 动态命名空间模块模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981942/

相关文章:

javascript - 一个部分或 div 的 Wordpress block 主题 css

javascript - "setTimeout(functon(){//do stuff},0)"是否会为其包含的函数导致微小的执行延迟?

javascript - 点击 <a> 标签时 Jquery 没有正确延迟

c# - 使用反射在运行时创建动态泛型

algorithm - 总和为S的最小硬币数

javascript - AngularJS 过滤器去除某个正则表达式

c# - 使用带有 out 参数的动态调用方法

clojure - 如何在 Clojure 中生成格式良好的 (all-ns) 输出?

ruby-on-rails - 将/profiles/1/edit/details 重写为/me/profile/details 的最佳方法?

xml - 使用 xslt 有条件地添加默认命名空间