我在离开javascript一段时间后正在建立一个小型库,我可能过度思考了这一点。我把我的图书馆包裹在一个封闭中,虽然我知道我可以用window.namespace.function
之类的东西返回我想要的东西,但我想知道我是否可以更优雅地做这样的事情:
(function($){
var config = {...}
var namespace = {
doStuff: function() {
// . . .
},
}
return namespace
})(jQuery)
加载此脚本后,用户是否可以使用namespace.doStuff()
之类的内容调用我的库?
此外,如果用户只是将我的库复制并粘贴到他们自己的闭包中,那么我的命名空间是否可以在他们的闭包中使用,而不是作为全局?
答案 0 :(得分:0)
如果您将其分配给某个东西,它只能在外部范围内使用。因为它是你返回它,但没有将它分配给任何东西,所以它不可用。
您可以像这样分配:
var ns = (function($){
var config = {...}
var namespace = {
doStuff: function() {
// . . .
},
}
return namespace;
})(jQuery);
然后,您可以从外部作用域调用doStuff()
函数,如下所示:
ns.doStuff();