2015-08-13 6 views
26

Was bedeutet get in dieser ES6-Klasse? Wie referenziere ich diese Funktion? Wie soll ich es benutzen?Was ist das Schlüsselwort "get" vor einer Funktion in einer Klasse?

class Polygon { 
    constructor(height, width) { 
    this.height = height; 
    this.width = width; 
    } 

    get area() { 
    return this.calcArea() 
    } 

    calcArea() { 
    return this.height * this.width; 
    } 
} 
+4

Es ist wahrscheinlich nur ein [Getter] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get) aber innerhalb einer Klasse statt eines Objekts. Es ist nicht wirklich ES6-spezifisch. – Xufox

+0

@Xufox wie meinst du es nicht ES6 spezifisch? –

+0

@KeithNicholas: Dass es in ES5 gleich funktioniert hat. – Bergi

Antwort

32

Es bedeutet, dass die Funktion ein Getter für eine Eigenschaft ist.

es verwenden zu können, benutzen Sie einfach seinen Namen wie jede andere Eigenschaft:

'use strict' 
 
class Polygon { 
 
    constructor(height, width) { 
 
    this.height = height; 
 
    this.width = width; 
 
    } 
 

 
    get area() { 
 
    return this.calcArea() 
 
    } 
 

 
    calcArea() { 
 
    return this.height * this.width; 
 
    } 
 
} 
 

 
var p = new Polygon(10, 20); 
 

 
alert(p.area);

+0

Ich habe mich immer schon gefragt. Vielen Dank. –

+1

Klassen sind implizit im strikten Modus BTW. http://www.ecma-international.org/ecma-262/6.0/#sec-strict-mode-code –

+1

@KitSunde - zumindest in meinem Browser (Chrome, Win7), ohne diese Aussage bekomme ich Konsolenfehler statt Arbeitsprobe. Und das ist nicht Teil von "The Answer", ähnlich wie der "Run Code Snippet" -Knopf nicht. – Amit

10

Es ist Getter, gleich wie Objekte und Klassen in OO JavaScript. Von der MDN Docs für get:

Die get Syntax bindet eine Objekteigenschaft zu einer Funktion, die aufgerufen wird, wenn diese Eigenschaft nachgeschlagen.