aboutsummaryrefslogtreecommitdiff
path: root/files/sv-se/web/javascript/reference/classes/static/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/sv-se/web/javascript/reference/classes/static/index.html')
-rw-r--r--files/sv-se/web/javascript/reference/classes/static/index.html179
1 files changed, 179 insertions, 0 deletions
diff --git a/files/sv-se/web/javascript/reference/classes/static/index.html b/files/sv-se/web/javascript/reference/classes/static/index.html
new file mode 100644
index 0000000000..515f4fbfec
--- /dev/null
+++ b/files/sv-se/web/javascript/reference/classes/static/index.html
@@ -0,0 +1,179 @@
+---
+title: static
+slug: Web/JavaScript/Reference/Classes/static
+tags:
+ - Klasser
+ - Metoder
+ - Statiska funktioner
+translation_of: Web/JavaScript/Reference/Classes/static
+---
+<div>{{jsSidebar("Classes")}}</div>
+
+<p>Nyckelordet <strong>static</strong> definierar en statisk metod för en klass.</p>
+
+<h2 id="Syntax">Syntax</h2>
+
+<pre class="syntaxbox">static methodName() { ... }</pre>
+
+<h2 id="Beskrivning">Beskrivning</h2>
+
+<p>Anrop på statiska metoder är gjorda direkt på klassen och kan inte göras genom instanser av klassen. Statiska metoder är ofta använda för att göra verktygsfunktioner.</p>
+
+<h2 id="Att_anropa_statiska_metoder">Att anropa statiska metoder</h2>
+
+<h3 id="Från_en_annan_statisk_metod">Från en annan statisk metod</h3>
+
+<p>För att anropa en statisk metod från en annan statisk metod av samma klass, kan du använda "<code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/this">this</a>".</code></p>
+
+<pre class="brush: js">class StaticMethodCall {
+ static staticMethod() {
+ return 'En statisk metod har blivit anropad';
+ }
+ static anotherStaticMethod() {
+ return this.staticMethod() + ' från en annan statisk metod!';
+ }
+}
+StaticMethodCall.staticMethod();
+// 'En statisk metod har blivit anropad'
+
+StaticMethodCall.anotherStaticMethod();
+// 'En statisk metod har blivit anropad från en annan statisk metod!'</pre>
+
+<h3 id="Från_en_klasskonstruktor_och_andra_metoder">Från en klasskonstruktor och andra metoder</h3>
+
+<p>Statiska metoder är inte tillgängliga genom att använda "<code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/this">this</a>"</code> från icke statiska metoder. Du behöver anropa dem genom att antingen använda klassnamnet: ClassName.staticMethodName() eller genom att anropa metoden som en egendom av konstruktorn: this.constructor.staticMethodName().</p>
+
+<pre class="brush: js">class StaticMethodCall {
+ constructor() {
+ console.log(StaticMethod.staticMethod());
+ // 'En statisk metod har blivit anropad.'
+
+ console.log(this.constructor.staticMethod());
+ // 'En statisk metod har blivit anropad.'
+ }
+
+ static staticMethod() {
+ return 'En statisk metod har blivit anropad.';
+ }
+}</pre>
+
+<h2 id="Exempel">Exempel</h2>
+
+<p>Det följande exemplet visar flera saker:</p>
+
+<ol>
+ <li>Hur en statisk metod implementeras på en klass.</li>
+ <li>Att en klass med en statisk medlem kan vara sub-klassad.</li>
+ <li>Hur en statisk metod kan och inte kan bli anropad.</li>
+</ol>
+
+<pre class="brush: js">class Triple {
+ static triple(n) {
+ if (n === undefined) {
+ n = 1;
+ }
+ return n * 3;
+ }
+}
+
+class BiggerTriple extends Triple {
+ static triple(n) {
+ return super.triple(n) * super.triple(n);
+ }
+}
+
+console.log(Triple.triple()); // 3
+console.log(Triple.triple(6)); // 18
+
+var tp = new Triple();
+
+console.log(BiggerTriple.triple(3));
+// 81 (Påverkas inte av förälderns instans.)
+
+console.log(tp.triple());
+// 'tp.triple is not a function'.
+</pre>
+
+<h2 id="Specifikationer">Specifikationer</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Specifikation</th>
+ <th scope="col">Status</th>
+ <th scope="col">Kommentar</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>Första definition.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Webbläsarkompatibilitet">Webbläsarkompatibilitet</h2>
+
+<p>{{CompatibilityTable}}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Funktion</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari</th>
+ </tr>
+ <tr>
+ <td>Grundlig support</td>
+ <td>{{CompatChrome(42.0)}}</td>
+ <td>{{CompatGeckoDesktop(45)}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Funktion</th>
+ <th>Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ <th>Chrome for Android</th>
+ </tr>
+ <tr>
+ <td>Grundlig support</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatGeckoMobile(45)}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatChrome(42.0)}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<h2 id="sect1"> </h2>
+
+<h2 id="Läs_också">Läs också</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/class"><code>class</code> expression</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/class"><code>class</code> declaration</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Classes">Classes</a></li>
+</ul>