Explorando Propriedades Estáticas em JavaScript
Em programação, propriedades estáticas permitem que informações compartilhadas existam entre todas as instâncias de uma classe, tornando-as ideais para dados consistentes.
O que são propriedades estáticas?
Propriedades estáticas pertencem à própria classe, e não a uma instância específica da classe. Isso significa que propriedades estáticas são compartilhadas entre todas as instâncias e podem ser acessadas diretamente pela classe, sem a necessidade de instanciar um objeto. Elas são frequentemente utilizadas para funções utilitárias, constantes ou dados que devem ser compartilhados entre todas as instâncias de uma classe.
Considere uma empresa onde cada funcionário (uma instância de uma classe) possui suas próprias informações pessoais (nome, cargo), mas o endereço da empresa (uma propriedade estática) é o mesmo para todos os funcionários. O endereço pertence à própria empresa, não a um funcionário individual.
Como declarar e utilizar propriedades estáticas
Para declarar uma propriedade estática, utilize a palavra-chave static
dentro da classe. Propriedades estáticas só podem ser acessadas utilizando o nome da classe, e não pelas instâncias da classe.
1234567891011121314151617181920class Company { static headquarters = '123 Main St'; // Static property constructor(name) { this.name = name; // Instance property } getCompanyInfo() { return `${this.name} is located at ${Company.headquarters}`; } } const google = new Company('Google'); console.log(google.getCompanyInfo()); // Output: Google is located at 123 Main St const amazon = new Company('Amazon'); console.log(amazon.getCompanyInfo()); // Output: Amazon is located at 123 Main St // Accessing the static property directly from the class console.log(Company.headquarters); // Output: 123 Main St
Neste exemplo, a propriedade headquarters
é compartilhada entre todas as instâncias da classe Company
. Tanto as instâncias Google
quanto Amazon
referenciam o mesmo endereço de sede. Propriedades estáticas são acessadas diretamente usando o nome da classe (Company.headquarters
), e não por meio das instâncias da classe.
Como as Propriedades Estáticas São Compartilhadas Entre Todas as Instâncias de uma Classe
Como as propriedades estáticas estão vinculadas à própria classe, elas não são copiadas para cada instância. Todas as instâncias da classe referenciam a mesma propriedade estática, tornando-a uma forma eficiente de armazenar dados que não precisam ser alterados por instância.
Exemplo: Contador para o Número de Instâncias Criadas
Suponha que desejamos acompanhar quantas instâncias de uma classe foram criadas. Podemos utilizar uma propriedade estática para armazenar a contagem de instâncias e incrementá-la toda vez que uma nova instância for criada.
123456789101112131415161718192021222324class User { static count = 0; // Static property to track the number of users constructor(name) { this.name = name; User.count++; // Increment static property every time a new user is created } getUserInfo() { return `${this.name} is user number ${User.count}`; } } const user1 = new User('John'); const user2 = new User('Jane'); const user3 = new User('Alice'); // Accessing the static property directly from the class console.log(User.count); // Output: 3 (number of users created) // Each instance can see the total count of users console.log(user1.getUserInfo()); // Output: John is user number 3 console.log(user2.getUserInfo()); // Output: Jane is user number 3 console.log(user3.getUserInfo()); // Output: Alice is user number 3
Neste exemplo, toda vez que um novo usuário é criado, a propriedade estática count
é incrementada. Todas as instâncias da classe User
compartilham o mesmo valor de count
, pois ela pertence à própria classe.
Benefícios das Propriedades Estáticas
Como as propriedades estáticas são compartilhadas entre as instâncias, não há necessidade de duplicar dados, o que mantém o código mais limpo e eficiente. Elas são especialmente úteis para armazenar informações que são iguais para todas as instâncias, como configurações ou constantes, ajudando a manter a consistência em todo o código.
Exemplo do Mundo Real: Configuração de Aplicação
Em um cenário real, pode-se ter um objeto de configuração de aplicação que armazena definições compartilhadas em toda a aplicação. Propriedades estáticas são uma excelente escolha para esses casos de uso.
12345678910111213141516171819202122class AppConfig { static appName = 'QuirkApp Solutions'; // Shared configuration setting static version = '1.3.14'; // Shared configuration setting constructor(user) { this.user = user; } getUserConfig() { return `${this.user} is using ${AppConfig.appName} version ${AppConfig.version}`; } } const user1 = new AppConfig('Alice'); const user2 = new AppConfig('Bob'); console.log(user1.getUserConfig()); // Output: Alice is using QuirkApp Solutions version 1.3.14 console.log(user2.getUserConfig()); // Output: Bob is using QuirkApp Solutions version 1.3.14 // Accessing static properties directly from the class console.log(AppConfig.appName); // Output: QuirkApp Solutions console.log(AppConfig.version); // Output: 1.3.14
Neste exemplo, o nome do aplicativo e a versão são compartilhados entre todos os usuários da aplicação. As propriedades estáticas appName
e version
pertencem à classe e não são replicadas para cada instância.
1. O que é uma propriedade estática?
2. Como acessar uma propriedade estática?
3. No código a seguir, qual será a saída de console.log(User.count);
?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 2.22
Explorando Propriedades Estáticas em JavaScript
Deslize para mostrar o menu
Em programação, propriedades estáticas permitem que informações compartilhadas existam entre todas as instâncias de uma classe, tornando-as ideais para dados consistentes.
O que são propriedades estáticas?
Propriedades estáticas pertencem à própria classe, e não a uma instância específica da classe. Isso significa que propriedades estáticas são compartilhadas entre todas as instâncias e podem ser acessadas diretamente pela classe, sem a necessidade de instanciar um objeto. Elas são frequentemente utilizadas para funções utilitárias, constantes ou dados que devem ser compartilhados entre todas as instâncias de uma classe.
Considere uma empresa onde cada funcionário (uma instância de uma classe) possui suas próprias informações pessoais (nome, cargo), mas o endereço da empresa (uma propriedade estática) é o mesmo para todos os funcionários. O endereço pertence à própria empresa, não a um funcionário individual.
Como declarar e utilizar propriedades estáticas
Para declarar uma propriedade estática, utilize a palavra-chave static
dentro da classe. Propriedades estáticas só podem ser acessadas utilizando o nome da classe, e não pelas instâncias da classe.
1234567891011121314151617181920class Company { static headquarters = '123 Main St'; // Static property constructor(name) { this.name = name; // Instance property } getCompanyInfo() { return `${this.name} is located at ${Company.headquarters}`; } } const google = new Company('Google'); console.log(google.getCompanyInfo()); // Output: Google is located at 123 Main St const amazon = new Company('Amazon'); console.log(amazon.getCompanyInfo()); // Output: Amazon is located at 123 Main St // Accessing the static property directly from the class console.log(Company.headquarters); // Output: 123 Main St
Neste exemplo, a propriedade headquarters
é compartilhada entre todas as instâncias da classe Company
. Tanto as instâncias Google
quanto Amazon
referenciam o mesmo endereço de sede. Propriedades estáticas são acessadas diretamente usando o nome da classe (Company.headquarters
), e não por meio das instâncias da classe.
Como as Propriedades Estáticas São Compartilhadas Entre Todas as Instâncias de uma Classe
Como as propriedades estáticas estão vinculadas à própria classe, elas não são copiadas para cada instância. Todas as instâncias da classe referenciam a mesma propriedade estática, tornando-a uma forma eficiente de armazenar dados que não precisam ser alterados por instância.
Exemplo: Contador para o Número de Instâncias Criadas
Suponha que desejamos acompanhar quantas instâncias de uma classe foram criadas. Podemos utilizar uma propriedade estática para armazenar a contagem de instâncias e incrementá-la toda vez que uma nova instância for criada.
123456789101112131415161718192021222324class User { static count = 0; // Static property to track the number of users constructor(name) { this.name = name; User.count++; // Increment static property every time a new user is created } getUserInfo() { return `${this.name} is user number ${User.count}`; } } const user1 = new User('John'); const user2 = new User('Jane'); const user3 = new User('Alice'); // Accessing the static property directly from the class console.log(User.count); // Output: 3 (number of users created) // Each instance can see the total count of users console.log(user1.getUserInfo()); // Output: John is user number 3 console.log(user2.getUserInfo()); // Output: Jane is user number 3 console.log(user3.getUserInfo()); // Output: Alice is user number 3
Neste exemplo, toda vez que um novo usuário é criado, a propriedade estática count
é incrementada. Todas as instâncias da classe User
compartilham o mesmo valor de count
, pois ela pertence à própria classe.
Benefícios das Propriedades Estáticas
Como as propriedades estáticas são compartilhadas entre as instâncias, não há necessidade de duplicar dados, o que mantém o código mais limpo e eficiente. Elas são especialmente úteis para armazenar informações que são iguais para todas as instâncias, como configurações ou constantes, ajudando a manter a consistência em todo o código.
Exemplo do Mundo Real: Configuração de Aplicação
Em um cenário real, pode-se ter um objeto de configuração de aplicação que armazena definições compartilhadas em toda a aplicação. Propriedades estáticas são uma excelente escolha para esses casos de uso.
12345678910111213141516171819202122class AppConfig { static appName = 'QuirkApp Solutions'; // Shared configuration setting static version = '1.3.14'; // Shared configuration setting constructor(user) { this.user = user; } getUserConfig() { return `${this.user} is using ${AppConfig.appName} version ${AppConfig.version}`; } } const user1 = new AppConfig('Alice'); const user2 = new AppConfig('Bob'); console.log(user1.getUserConfig()); // Output: Alice is using QuirkApp Solutions version 1.3.14 console.log(user2.getUserConfig()); // Output: Bob is using QuirkApp Solutions version 1.3.14 // Accessing static properties directly from the class console.log(AppConfig.appName); // Output: QuirkApp Solutions console.log(AppConfig.version); // Output: 1.3.14
Neste exemplo, o nome do aplicativo e a versão são compartilhados entre todos os usuários da aplicação. As propriedades estáticas appName
e version
pertencem à classe e não são replicadas para cada instância.
1. O que é uma propriedade estática?
2. Como acessar uma propriedade estática?
3. No código a seguir, qual será a saída de console.log(User.count);
?
Obrigado pelo seu feedback!