Eu sou mais novo no JavaScript e venho de um Javafundo. Estou tentando escrever um aplicativo JavaScript bastante simples, mas estou tendo alguns problemas. Quero duplicar um tipo de estrutura de classe no JavaScript, o problema que estou tendo está relacionado ao escopo das funções dentro das funções.
Eu quero criar uma estrutura como esta
function codeArray() {
function create() {
addElement( prop1, prop2,) {
//create an element
}
function traverse(object) {
//recursively go through some nested list data structure
addElement(asd, 4534);
}
}
function deleteElement() {
//delete a single element from an array
}
print() {
//print array;
}
}
something.click(function() {
codeArray.create();
codeArray.print();
});
Portanto, o problema que estou enfrentando é por causa doescopo das funções aninhadas dentro de codeArray Não consigo acessá-las de fora de codeArray. Seria uma má prática de encapsulamento livrar-se da função codeArray do wrapper? Alguém pode sugerir uma reescrita melhor de como fazer isso?
Desde já, obrigado.
Respostas:
7 para resposta № 1Você está quase certo. Você deveria usar um objeto:
codeArray = {
create:function() {
// ...
},
// ...
print:function() {
// ...
}
};
Então você pode ligar:
codeArray.create();
codeArray.print();