JQuery 命名空间的最佳实践 +通用效用函数
当前用于实现 JQuery 命名空间以托管通用实用程序函数的“经验法则”有哪些?
我有许多 JavaScript 实用方法分散在各个文件中,我想将它们合并到一个(或多个)命名空间中。最好的方法是什么?
我目前正在研究两种不同的语法,按优先顺序列出:
//******************************
// JQuery Namespace syntax #1
//******************************
if (typeof(MyNamespace) === "undefined")
{
MyNamespace = {};
}
MyNamespace.SayHello = function ()
{
alert("Hello from MyNamespace!");
}
MyNamespace.AddEmUp = function (a, b)
{
return a + b;
}
//******************************
// JQuery Namespace syntax #2
//******************************
if (typeof (MyNamespace2) === "undefined")
{
MyNamespace2 =
{
SayHello: function ()
{
alert("Hello from MyNamespace2!");
},
AddEmUp: function (a, b)
{
return a + b;
}
};
}
语法#1 更冗长,但似乎它会更容易维护。我不需要在方法之间添加逗号,并且可以左对齐所有函数。
还有其他更好的方法吗?
What are some current "rules of thumb" for implementing JQuery namespaces to host general purpose utility functions?
I have a number of JavaScript utility methods scattered in various files that I'd like to consolidate into one (or more) namespaces. What's the best way to do this?
I'm currently looking at two different syntaxes, listed in order of preference:
//******************************
// JQuery Namespace syntax #1
//******************************
if (typeof(MyNamespace) === "undefined")
{
MyNamespace = {};
}
MyNamespace.SayHello = function ()
{
alert("Hello from MyNamespace!");
}
MyNamespace.AddEmUp = function (a, b)
{
return a + b;
}
//******************************
// JQuery Namespace syntax #2
//******************************
if (typeof (MyNamespace2) === "undefined")
{
MyNamespace2 =
{
SayHello: function ()
{
alert("Hello from MyNamespace2!");
},
AddEmUp: function (a, b)
{
return a + b;
}
};
}
Syntax #1 is more verbose but it seems like it would be easier to maintain down the road. I don't need to add commas between methods, and I can left align all my functions.
Are there other, better ways to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于 jQuery 插件等,如果您希望它在元素上可用,则模式是使用
$.fn.myPlugin
,如果您只想使用$.whatever
命名空间。我建议阅读官方 插件创作文档 和 这些 文章。但除了 jQuery 之外,为你的 utils 命名空间的最简单方法是这样的:
JS 中命名空间的基础知识最近并没有真正改变 - 你应该查看 snook 的文章,DED 的优雅方法 和这个问题。
使用自调用函数声明命名空间的主要优点是您可以在返回对象之前私下执行内容。此外,该对象将准备好由控制台自动完成,您将在
$
命名空间中错过它,因为 jQuery 返回一个函数而不是一个对象。For jQuery plugins and such the pattern is to use
$.fn.myPlugin
if you want it to be available on elements, and$.whatever
if you just want to use the namespace. I recommend reading the official Plugins Authoring document and these articles.But jQuery aside, the easiest way to namespace your utils would be along these lines:
The basics of namespacing in JS hasn't really changed lately - You should check out snook's article, DED's elegant approach and this SO question.
The main advantage of using a self-invoked function to declare namespaces is you can execute stuff privately before returning the object. Also, the object will be ready for auto-complete by your console, which you'll miss on the
$
namespace because jQuery returns a function rather than an object.作为记录,我最终使用了第一种语法:
For the record, I ended up using the first syntax: