隔离代码与其他脚本(命名空间)

时间:2012-09-28 21:48:07

标签: javascript jquery

我这样做:

;(function($, window, document, undefined){

  var MyNamespace= MyNamespace || {};

  $.MyNamespace.someMethod = function(){
    // code
  };

  $.MyNamespace.someOtherMethod = function(){
    // code
  };

  $.MyNamespace.someProperty = {};

  // etc.


}(jQuery));

没关系?

2 个答案:

答案 0 :(得分:3)

在变量初始化中,您将其设置为全局MyNamespace(如果存在),这不是作用域/隔离的。

然后引用$.MyNamespace而不是MyNamespace来引用两个非常不同的东西。 $是引用jQuery的参数,因此可以全局访问,而不是与其他代码隔离。

如果您希望其他代码可以访问$.MyNamespace,请使用MyNamespace {{1}}如果您希望仅限访问此代码。

答案 1 :(得分:1)

修改后的代码: 有两个问题。

MyNamespace是$的属性。 并且在功能体内没有窗口和文档。

;(function($, window, document, undefined){

  $.MyNamespace= $.MyNamespace || {};

  $.MyNamespace.someMethod = function(){
    // code
  };

  $.MyNamespace.someOtherMethod = function(){
    // code
  };

  $.MyNamespace.someProperty = {};

  // etc.


}(jQuery, window, window.document));