2016-03-24 24 views
0

Ich bin ein seltsames Problem mit, wenn eine Methode namens get oder set innerhalb einer Klasse definieren Zum Beispiel habe ich die Klasse Mem bin definieren wie folgt:.Javascript Syntaxerror: unerwartetes Token ‚(‘

class Mem { 
    constructor() { 
     this.list=[] 
    } 

    get(index) { 
     return this.list[index]; 
    } 

    set(index, value) { 
     this.list[index] = value; 
    } 
} 

Aber ich erhalte ein SyntaxError: Unexpected token '('

Allerdings, wenn ich den Namen der Methode zu geta oder seta, der Klassendefinition Arbeiten ändern, und ich habe nicht die Syntax.

class Mem { 
    constructor() { 
     this.list=[] 
    } 

    geta(index) { 
     return this.list[index]; 
    } 

    seta(index, value) { 
     this.list[index] = value; 
    } 
} 

Ich habe überprüft, dass get und set keine Schlüsselwörter in Javascript eingeschränkt sind, so dass ich verwirrt bin, was ich falsch mache.

+1

Klingt wie ein Fehler mit welcher Umgebung Sie es auch ausführen. Das Kopieren und Einfügen Ihres Codes in Chrome funktioniert einwandfrei. –

+0

Nur überprüft und es funktioniert in Chrome. Es scheint, dass dieser Fehler nur bei Safari auftritt. – dqiu

+2

Sie eilen mit ES6-Technologien ('class') auf Browsern, die es immer noch nicht * vollständig * unterstützen. Bitte beziehen Sie sich immer auf die Kompatibilitätstabelle. –

Antwort

0

Sie kollidieren mit der getter and setter syntax.

{get prop() { ... } } 
{get [expression]() { ... } } 
+0

Nicht wahr. Das ist eine völlig andere Syntax. Versuchen Sie, dies in Ihrer Konsole auszuführen (ich verwende Chrome). 'var obj = {get() {return 'hey'; }}; obj.get() 'Es ist durchaus zulässig, eine Funktion namens' get' oder 'set' zu deklarieren. –

+1

@MikeC Ich muss zustimmen, dass es sich um einen spezifischen Browser-ES6-Kompatibilitätsfehler handelt. –

+0

Nina ist genau richtig! Es ist ES6 und Typoskript-Syntax. –

Verwandte Themen