2

我这样做是这样的:

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

  var MyNamespace= MyNamespace || {};

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

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

  $.MyNamespace.someProperty = {};

  // etc.


}(jQuery));

可以吗?

4

2 回答 2

3

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

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

如果$.MyNamespace您希望其他代码可以访问它,并且MyNamespace如果您希望仅访问此代码,请使用它。

于 2012-09-28T21:53:22.473 回答
1

修改代码:有两个问题。

MyNamespace 是 $ 的属性。并且窗口和文档在函数体内不可用。

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

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

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

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

  $.MyNamespace.someProperty = {};

  // etc.


}(jQuery, window, window.document));
于 2012-09-28T21:52:03.670 回答