Variáveis estáticas em JavaScript
- Use a propriedade de uma função para criar variáveis estáticas em JavaScript
-
Use IIFE (
Immediately Invoked Function Expression
) para criar variáveis estáticas em JavaScript -
Use o
arguments.callee
para criar variáveis estáticas em JavaScript - Use construtores para criar variáveis estáticas em JavaScript
Este tutorial apresenta como criar variáveis estáticas em JavaScript. Variáveis estáticas são variáveis, normalmente usadas em funções, que mantêm seu valor entre chamadas de função. A palavra-chave static
ajuda a definir uma propriedade ou método estático de uma classe.
Use a propriedade de uma função para criar variáveis estáticas em JavaScript
Funções em JavaScript são objetos e podem ter propriedades. Portanto, podemos criar variáveis estáticas declarando as propriedades da função. Eles mantêm seus valores como variáveis globais e não podem ser modificados fora das funções, tornando-os muito mais organizados do que as variáveis globais.
function getId() {
if (typeof getId.counter == 'undefined') {
getId.counter = 0;
}
alert(++getId.counter);
}
Chamar a função acima várias vezes aumenta o valor do contador e não pode ser acessado fora da função como variáveis globais parando toda a bagunça.
Use IIFE (Immediately Invoked Function Expression
) para criar variáveis estáticas em JavaScript
IIFE são funções que são executadas assim que são definidas. Consiste em duas partes:
- Uma função anônima com um escopo léxico delimitado pelo operador de agrupamento
()
. - Expressão de função que é interpretada diretamente pelo JavaScript.
var incr = (function() {
var i = 1;
return function() {
return i++;
}
})();
incr(); // returns 1
incr(); // returns 2
Cada vez que a função é chamada, o contador i
aumenta em um. i
é inacessível externamente porque é propriedade de uma função, assim como uma variável estática típica dentro de uma classe.
Use o arguments.callee
para criar variáveis estáticas em JavaScript
Podemos usar arguments.callee
para armazenar variáveis estáticas em JavaScript. Refere-se à função que está sendo executada atualmente, e podemos anexar propriedades a ela diretamente, como faríamos com um objeto de função.
function() {
arguments.callee.myStaticVar = arguments.callee.myStaticVar || 1;
arguments.callee.myStaticVar++;
alert(arguments.callee.myStaticVar);
}
Este método é muito semelhante ao método 1, com a única diferença sendo, em vez de anexar diretamente as propriedades, estamos usando arguments.callee
para adicionar propriedades à função atualmente em execução.
Use construtores para criar variáveis estáticas em JavaScript
Este método é a versão equivalente de linguagens orientadas a objetos fortemente tipadas como C++
/ Java
/ C#
. Tentamos atribuir variáveis a um tipo inteiro e não a todas as instâncias.
function delftClass() {
var privateVariable = 'foo';
this.publicVariable = 'bar';
this.privilegedMethod = function() {
alert(privateVariable);
};
}
delftClass.prototype.publicMethod = function() {
alert(this.publicVariable);
};
delftClass.staticProperty = 'baz';
var myInstance = new delftClass();
Aqui, criamos a função de construção delftClass
e atribuímos uma propriedade estática que não tem nada a ver com a instância criada. JavaScript trata funções como objetos, portanto, sendo um objeto, podemos atribuir propriedades a uma função. Todas as instâncias compartilharão a variável estática.
Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.
LinkedIn