2016-03-24 18 views
0

クラス内部getまたはsetという名前のメソッドを定義するとき、私は奇妙な問題を抱えている、例えば、以下のように私はクラスMemのを定義しています:。JavascriptのでSyntaxError:予期しないトークン「(」

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

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

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

しかし、私はgetaまたはsetaにメソッド名を変更するとき、私はクラス定義の作品、しかしSyntaxError: Unexpected token '('

を取得し、私がでSyntaxErrorを得ることはありません。

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

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

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

私はgetsetがJavascriptでは制限されていないキーワードであることを確認していますので、私が間違っていることについて混乱しています。

+1

実行中の環境に関係なくエラーが発生します。 Chromeでコードをコピーして貼り付けても問題ありません。 –

+0

ちょうどチェックされ、それはクロームで動作します。このエラーはSafariでのみ発生するようです。 – dqiu

+2

まだ完全に*サポートしていないブラウザでは、ES6テクノロジ( 'class')を使用しています。互換性表を常に参照してください。 –

答えて

0

getter and setter syntaxと衝突しています。

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

それはまったく異なる構文です。コンソールでこれを実行してみてください(Chromeを実行しています)。 'var obj = {get(){return 'hey'; }}; obj.get() '' get'または 'set'という名前の関数を宣言するのは完全に有効です。 –

+1

@MikeC特定のブラウザのES6互換性の欠陥であることに同意する必要があります。 –

+0

ニーナがこの上にいる!これはES6とタイポスクリプトの構文です。 –

関連する問題