2015-08-13 15 views
26

Cosa significa get in questa classe ES6? Come faccio a fare riferimento a questa funzione? Come dovrei usarlo?Qual è la parola chiave "get" prima di una funzione in una classe?

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

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

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

È molto probabilmente solo un [getter] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get) ma all'interno di una classe anziché di un oggetto. Non è proprio specifico per ES6. – Xufox

+0

@Xufox come intendete che non sia specifico per ES6? –

+0

@KeithNicholas: Che ha funzionato in ES5 lo stesso. – Bergi

risposta

32

Significa che la funzione è un getter per una proprietà.

Per usarlo, basta usare il suo nome come si farebbe con qualsiasi altra proprietà:

'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

Mi sono sempre chiesto questo. Grazie. –

+1

Le classi sono implicitamente nella modalità strict btw. http://www.ecma-international.org/ecma-262/6.0/#sec-strict-mode-code –

+1

@KitSunde - almeno sul mio browser (Chrome, Win7), senza quella dichiarazione ottengo errori console invece di campione funzionante. E questo non fa parte di "The Answer", proprio come il pulsante "Esegui codice snippet" non lo è. – Amit

10

È getter, stessa di oggetti e classi in OO JavaScript. Dal MDN Documenti per get:

La sintassi get lega proprietà di un oggetto a una funzione che verrà chiamato quando la proprietà viene cercato.

Problemi correlati