Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Explorando Propriedades Estáticas em JavaScript | Dominando Classes e Herança em JavaScript
Domínio Avançado de JavaScript

bookExplorando 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.

1234567891011121314151617181920
class 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
copy

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.

123456789101112131415161718192021222324
class 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
copy

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.

12345678910111213141516171819202122
class 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
copy

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);?

question mark

O que é uma propriedade estática?

Select the correct answer

question mark

Como acessar uma propriedade estática?

Select the correct answer

question mark

No código a seguir, qual será a saída de console.log(User.count);?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 11

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 2.22

bookExplorando 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.

1234567891011121314151617181920
class 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
copy

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.

123456789101112131415161718192021222324
class 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
copy

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.

12345678910111213141516171819202122
class 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
copy

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);?

question mark

O que é uma propriedade estática?

Select the correct answer

question mark

Como acessar uma propriedade estática?

Select the correct answer

question mark

No código a seguir, qual será a saída de console.log(User.count);?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 11
some-alt