Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Undersøgelse af Statiske Egenskaber i JavaScript | Mestering af JavaScript-klasser og Arv
Avanceret JavaScript-Mestring

bookUndersøgelse af Statiske Egenskaber i JavaScript

Inden for programmering gør statiske egenskaber det muligt at have delt information på tværs af alle instanser af en klasse, hvilket gør dem ideelle til konsistente data.

Hvad er statiske egenskaber?

Statiske egenskaber tilhører selve klassen og ikke en bestemt instans af klassen. Det betyder, at statiske egenskaber deles mellem alle instanser og kan tilgås direkte fra klassen uden at skulle oprette et objekt. De bruges ofte til hjælpefunktioner, konstanter eller data, der skal deles på tværs af alle instanser af en klasse.

Forestil dig en virksomhed, hvor hver medarbejder (en instans af en klasse) har sine egne personlige oplysninger (navn, stilling), men virksomhedens adresse (en statisk egenskab) er den samme for alle medarbejdere. Adressen tilhører virksomheden selv, ikke den enkelte medarbejder.

Sådan deklareres og bruges statiske egenskaber

For at deklarere en statisk egenskab anvendes nøgleordet static inde i klassen. Statiske egenskaber kan kun tilgås ved hjælp af klassenavnet, ikke fra klasseinstanser.

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

I dette eksempel deles egenskaben headquarters mellem alle instanser af Company-klassen. Både Google- og Amazon-instanserne refererer til den samme hovedkontoradresse. Statiske egenskaber tilgås direkte ved brug af klassenavnet (Company.headquarters), ikke gennem instanser af klassen.

Hvordan statiske egenskaber deles mellem alle instanser af en klasse

Da statiske egenskaber er knyttet til selve klassen, kopieres de ikke for hver instans. Alle instanser af klassen refererer til den samme statiske egenskab, hvilket gør det til en effektiv måde at gemme data på, som ikke behøver at ændres pr. instans.

Eksempel: Tæller for antallet af oprettede instanser

Antag, at vi ønsker at holde styr på, hvor mange instanser af en klasse der er blevet oprettet. Vi kan bruge en statisk egenskab til at gemme antallet af instanser og øge den, hver gang en ny instans oprettes.

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

I dette eksempel øges den statiske egenskab count, hver gang en ny bruger oprettes. Alle instanser af User-klassen deler den samme count-værdi, da den tilhører selve klassen.

Fordele ved statiske egenskaber

Da statiske egenskaber deles mellem instanser, er der ikke behov for at duplikere data, hvilket gør koden mere overskuelig og effektiv. De er særligt nyttige til at gemme information, der er ens for alle instanser, såsom konfigurationsindstillinger eller konstanter, hvilket hjælper med at opretholde konsistens i hele koden.

Virkelighedsnært eksempel: Applikationskonfiguration

I en virkelig situation kan man have et applikationskonfigurationsobjekt, der gemmer delte indstillinger på tværs af applikationen. Statiske egenskaber er et fremragende valg til sådanne anvendelser.

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

I dette eksempel deles app-navnet og versionen mellem alle brugere af applikationen. De statiske egenskaber appName og version tilhører klassen og bliver ikke duplikeret for hver instans.

1. Hvad er en statisk egenskab?

2. Hvordan tilgår man en statisk egenskab?

3. I den følgende kode, hvad vil console.log(User.count); udskrive?

question mark

Hvad er en statisk egenskab?

Select the correct answer

question mark

Hvordan tilgår man en statisk egenskab?

Select the correct answer

question mark

I den følgende kode, hvad vil console.log(User.count); udskrive?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 11

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

Can you explain the difference between static and instance properties?

When should I use static properties instead of instance properties?

Are there any limitations or best practices for using static properties?

Awesome!

Completion rate improved to 2.22

bookUndersøgelse af Statiske Egenskaber i JavaScript

Stryg for at vise menuen

Inden for programmering gør statiske egenskaber det muligt at have delt information på tværs af alle instanser af en klasse, hvilket gør dem ideelle til konsistente data.

Hvad er statiske egenskaber?

Statiske egenskaber tilhører selve klassen og ikke en bestemt instans af klassen. Det betyder, at statiske egenskaber deles mellem alle instanser og kan tilgås direkte fra klassen uden at skulle oprette et objekt. De bruges ofte til hjælpefunktioner, konstanter eller data, der skal deles på tværs af alle instanser af en klasse.

Forestil dig en virksomhed, hvor hver medarbejder (en instans af en klasse) har sine egne personlige oplysninger (navn, stilling), men virksomhedens adresse (en statisk egenskab) er den samme for alle medarbejdere. Adressen tilhører virksomheden selv, ikke den enkelte medarbejder.

Sådan deklareres og bruges statiske egenskaber

For at deklarere en statisk egenskab anvendes nøgleordet static inde i klassen. Statiske egenskaber kan kun tilgås ved hjælp af klassenavnet, ikke fra klasseinstanser.

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

I dette eksempel deles egenskaben headquarters mellem alle instanser af Company-klassen. Både Google- og Amazon-instanserne refererer til den samme hovedkontoradresse. Statiske egenskaber tilgås direkte ved brug af klassenavnet (Company.headquarters), ikke gennem instanser af klassen.

Hvordan statiske egenskaber deles mellem alle instanser af en klasse

Da statiske egenskaber er knyttet til selve klassen, kopieres de ikke for hver instans. Alle instanser af klassen refererer til den samme statiske egenskab, hvilket gør det til en effektiv måde at gemme data på, som ikke behøver at ændres pr. instans.

Eksempel: Tæller for antallet af oprettede instanser

Antag, at vi ønsker at holde styr på, hvor mange instanser af en klasse der er blevet oprettet. Vi kan bruge en statisk egenskab til at gemme antallet af instanser og øge den, hver gang en ny instans oprettes.

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

I dette eksempel øges den statiske egenskab count, hver gang en ny bruger oprettes. Alle instanser af User-klassen deler den samme count-værdi, da den tilhører selve klassen.

Fordele ved statiske egenskaber

Da statiske egenskaber deles mellem instanser, er der ikke behov for at duplikere data, hvilket gør koden mere overskuelig og effektiv. De er særligt nyttige til at gemme information, der er ens for alle instanser, såsom konfigurationsindstillinger eller konstanter, hvilket hjælper med at opretholde konsistens i hele koden.

Virkelighedsnært eksempel: Applikationskonfiguration

I en virkelig situation kan man have et applikationskonfigurationsobjekt, der gemmer delte indstillinger på tværs af applikationen. Statiske egenskaber er et fremragende valg til sådanne anvendelser.

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

I dette eksempel deles app-navnet og versionen mellem alle brugere af applikationen. De statiske egenskaber appName og version tilhører klassen og bliver ikke duplikeret for hver instans.

1. Hvad er en statisk egenskab?

2. Hvordan tilgår man en statisk egenskab?

3. I den følgende kode, hvad vil console.log(User.count); udskrive?

question mark

Hvad er en statisk egenskab?

Select the correct answer

question mark

Hvordan tilgår man en statisk egenskab?

Select the correct answer

question mark

I den følgende kode, hvad vil console.log(User.count); udskrive?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 11
some-alt