2017-09-12 3 views
2

Gibt es eine Möglichkeit, eine Funktion zu erstellen, die ohne Parameter aufgerufen wird? zum Beispiel, ich habe diese KlasseES6 Funktion ohne Parameter?

export class Student { 
    constructor(ssn) { 
    this.SSN = ssn; 
    } 
    SocialSecurityNumber() { 
    return this.SSN; 
    } 
} 

Ich möchte diese in der Lage sein zu tun:

let student = new Student(123456); 
console.log(student.SocialSecurityNumber); 

dies nicht funktioniert jetzt, aber gibt es eine Syntax, die ich dies zu erreichen, verwenden kann?

+6

'student.SocialSecurityNumber()' - Sie müssen es nennen, sonst sind Sie nur die Funktionsdefinition zu drucken. Es ist auch gängiger, mit einem Kleinbuchstaben des Funktionsnamens zu beginnen - z. 'getSocialSecurityNumber' –

+0

Um _call_ eine Funktion aufzurufen, müssen Sie Klammern verwenden, obwohl keine Parameter übergeben werden. Andernfalls behandelt der Parser Ihren Code als Versuch, ein Funktionsobjekt _access_ zu erreichen. – raina77ow

+0

Sie wollen, dass 'student.SocialSecurityNumber' funktioniert, tun' this.SocialSecurityNumber = ssn; 'und entfernen Sie einfach die Funktion. – loganfsmyth

Antwort

4

nur hinzufügen, dass eine Alternative die Funktion mit Klammern zu nennen student.socialSecurityNumber(), können Sie diese einen Getter machen könnte:

class Student { 
 
    constructor(ssn) { 
 
    this.SSN = ssn; 
 
    } 
 
    get socialSecurityNumber() { 
 
    return this.SSN; 
 
    } 
 
} 
 

 
const student = new Student(123456); 
 
console.log(student.socialSecurityNumber);

diese Weise können Sie es mit der gleichen Syntax wie ein nennen könnte Eigentum.

+1

Perfekt, danke! – Pacman