Recentemente, reconstruí as coisas e encontrei as configurações de namespace. Procurei por algum conhecimento, perguntei a alguns especialistas e escrevi minha experiência.
Eu acredito que todo mundo sabe que a janela é de primeira, então não vou escrever janela aqui, então vou ignorá-la primeiro
1: Sobre o topo
A cópia do código é a seguinte: var ns = ns || {};
Pode -se observar que, se você achar que não existe esse objeto, criará automaticamente o novo objeto (); Se houver, você usará este objeto diretamente, para que ele não seja substituído.
2: O segundo nível , é claro, você também pode criar o segundo nível no nível superior ns, ou seja,
A cópia do código é a seguinte: NS.ModuleClass = {};
Você pode ver que uma classe é criada sob NS e, é claro, você pode continuar a criar os métodos da classe, ou seja, é: é:
A cópia do código é a seguinte: ns.moduleClass.method1 = function () {////};
3: Como fazer vários níveis , como com.qw.view. Eu quero colocá -lo em um espaço para nome. Isso requer definir o espaço para o nome para cada nome separado por ponto e configurá-lo em um objeto.
Vejamos um exemplo e defini -lo na janela:
A cópia do código é a seguinte:
namespace de funções (sspace) {
var arr = sspace.split ('.'), i = 0, namei;
var root = janela;
para (; namei = arr [i ++];) {
if (! root [namei]) {
root [namei] = {};
}
root = root [namei];
}
ROOT ROOT;
}
Você pode ver que é realmente o que eu mencionei acima. Usei uma travessia para definir todos os objetos separados, para que cada um deles possa ser usado separadamente.
4: Liste as dicas comumente usadas , simples e rápidas para definir namespaces
A cópia do código é a seguinte:
if (! window.ns) {
window.ns = {};
}
var ns;
if (typeof ns == "indefinido") {
ns = {};
}
if (typeof ns.className == "indefinido") {
ns.className = {};
}