我这样做:
;(function($, window, document, undefined){
var MyNamespace= MyNamespace || {};
$.MyNamespace.someMethod = function(){
// code
};
$.MyNamespace.someOtherMethod = function(){
// code
};
$.MyNamespace.someProperty = {};
// etc.
}(jQuery));
没关系?
答案 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));