我一直在编写一个相当Javascript密集的应用程序,并且遇到名称空间问题。
我知道这个话题有很多,但我仍然对如何应对它感到困惑。
有没有办法将我的所有类和对象文字都包装到命名空间中,这是最好的方法吗?
我读过这篇文章 http://yuiblog.com/blog/2007/06/12/module-pattern/我希望命名我的项目,但不知道如何使用普通的javascript或jQuery来实现它。
编辑:我知道这不是一个直截了当的问题,因为它取决于个人喜好,风格和要求。
谢谢,
添
答案 0 :(得分:2)
这篇文章几乎总结了“命名空间”对象的使用(关于这个话题还有很多其他文章)。请注意,使用全局变量和具有相同命名方案的下划线可以获得完全相同的效果,因此:
var myLib = {
method1: function()...,
method2: function()...
};
或
function myLib_metod1()...
function myLib_metod2()...
从“命名空间”冲突角度来看,是等效的。但是,我认为使用对象更整洁。
答案 1 :(得分:2)
就个人而言,当人们将所有内容包装在function(){}包装器中时,我讨厌它。它基本上使一切都变得私密,并且不允许你正确地添加补丁。
您始终可以在全局命名空间中声明单个对象:
var base = {
class0:function(){}
};
base.subspace1 = {
myVar:'foo'
};
base.class1 = function(){};
此外,您可以通过辅助脚本文件动态追加到该对象:
base.subspace2 = {};
用法:
var foo = new base.class0();
var bar = base.subspace1.myVar;