Utforskning av Statiska Egenskaper i JavaScript
Inom programmering möjliggör statiska egenskaper delad information mellan alla instanser av en klass, vilket gör dem idealiska för konsekvent data.
Vad är statiska egenskaper?
Statiska egenskaper tillhör själva klassen snarare än någon enskild instans av klassen. Detta innebär att statiska egenskaper delas mellan alla instanser och kan nås direkt från klassen utan att behöva skapa ett objekt. De används ofta för hjälpfunktioner, konstanter eller data som ska delas mellan alla instanser av en klass.
Tänk på ett företag där varje anställd (en instans av en klass) har sin egen personliga information (namn, befattning), men företagets adress (en statisk egenskap) är densamma för alla anställda. Adressen tillhör själva företaget, inte någon enskild anställd.
Hur deklarerar och använder man statiska egenskaper
För att deklarera en statisk egenskap används nyckelordet static inuti klassen. Statiska egenskaper kan endast nås med klassens namn, inte från klassinstanser.
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
I det här exemplet delas egenskapen headquarters mellan alla instanser av klassen Company. Både instanserna Google och Amazon refererar till samma huvudkontorsadress. Statisk egenskap nås direkt via klassnamnet (Company.headquarters), inte genom instanser av klassen.
Hur statiska egenskaper delas mellan alla instanser av en klass
Eftersom statiska egenskaper är kopplade till själva klassen kopieras de inte för varje instans. Alla instanser av klassen refererar till samma statiska egenskap, vilket gör det till ett effektivt sätt att lagra data som inte behöver ändras per instans.
Exempel: Räknare för antalet skapade instanser
Anta att vi vill hålla reda på hur många instanser av en klass som har skapats. Vi kan använda en statisk egenskap för att lagra antalet instanser och öka den varje gång en ny instans skapas.
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
I detta exempel ökas den statiska egenskapen count varje gång en ny användare skapas. Alla instanser av klassen User delar samma värde för count, eftersom det tillhör själva klassen.
Fördelar med statiska egenskaper
Eftersom statiska egenskaper delas mellan instanser finns det inget behov av att duplicera data, vilket gör koden renare och mer effektiv. De är särskilt användbara för att lagra information som är densamma för alla instanser, såsom konfigurationsinställningar eller konstanter, vilket bidrar till att upprätthålla konsekvens i hela koden.
Exempel från verkligheten: Applikationskonfiguration
I ett verkligt scenario kan du ha ett applikationskonfigurationsobjekt som lagrar delade inställningar över hela applikationen. Statiska egenskaper är ett utmärkt val för sådana användningsområden.
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
I det här exemplet delas appnamn och version mellan alla användare av applikationen. De statiska egenskaperna appName och version tillhör klassen och dupliceras inte för varje instans.
1. Vad är en statisk egenskap?
2. Hur får man åtkomst till en statisk egenskap?
3. I följande kod, vad kommer console.log(User.count); att skriva ut?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 2.22
Utforskning av Statiska Egenskaper i JavaScript
Svep för att visa menyn
Inom programmering möjliggör statiska egenskaper delad information mellan alla instanser av en klass, vilket gör dem idealiska för konsekvent data.
Vad är statiska egenskaper?
Statiska egenskaper tillhör själva klassen snarare än någon enskild instans av klassen. Detta innebär att statiska egenskaper delas mellan alla instanser och kan nås direkt från klassen utan att behöva skapa ett objekt. De används ofta för hjälpfunktioner, konstanter eller data som ska delas mellan alla instanser av en klass.
Tänk på ett företag där varje anställd (en instans av en klass) har sin egen personliga information (namn, befattning), men företagets adress (en statisk egenskap) är densamma för alla anställda. Adressen tillhör själva företaget, inte någon enskild anställd.
Hur deklarerar och använder man statiska egenskaper
För att deklarera en statisk egenskap används nyckelordet static inuti klassen. Statiska egenskaper kan endast nås med klassens namn, inte från klassinstanser.
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
I det här exemplet delas egenskapen headquarters mellan alla instanser av klassen Company. Både instanserna Google och Amazon refererar till samma huvudkontorsadress. Statisk egenskap nås direkt via klassnamnet (Company.headquarters), inte genom instanser av klassen.
Hur statiska egenskaper delas mellan alla instanser av en klass
Eftersom statiska egenskaper är kopplade till själva klassen kopieras de inte för varje instans. Alla instanser av klassen refererar till samma statiska egenskap, vilket gör det till ett effektivt sätt att lagra data som inte behöver ändras per instans.
Exempel: Räknare för antalet skapade instanser
Anta att vi vill hålla reda på hur många instanser av en klass som har skapats. Vi kan använda en statisk egenskap för att lagra antalet instanser och öka den varje gång en ny instans skapas.
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
I detta exempel ökas den statiska egenskapen count varje gång en ny användare skapas. Alla instanser av klassen User delar samma värde för count, eftersom det tillhör själva klassen.
Fördelar med statiska egenskaper
Eftersom statiska egenskaper delas mellan instanser finns det inget behov av att duplicera data, vilket gör koden renare och mer effektiv. De är särskilt användbara för att lagra information som är densamma för alla instanser, såsom konfigurationsinställningar eller konstanter, vilket bidrar till att upprätthålla konsekvens i hela koden.
Exempel från verkligheten: Applikationskonfiguration
I ett verkligt scenario kan du ha ett applikationskonfigurationsobjekt som lagrar delade inställningar över hela applikationen. Statiska egenskaper är ett utmärkt val för sådana användningsområden.
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
I det här exemplet delas appnamn och version mellan alla användare av applikationen. De statiska egenskaperna appName och version tillhör klassen och dupliceras inte för varje instans.
1. Vad är en statisk egenskap?
2. Hur får man åtkomst till en statisk egenskap?
3. I följande kod, vad kommer console.log(User.count); att skriva ut?
Tack för dina kommentarer!