2016-03-24 17 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; 
    } 
} 

Но Я получаю SyntaxError: Unexpected token '('

Однако при изменении имени метода geta или seta, работ по определению класса, и я не получаю SyntaxError.

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

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

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

Я проверил, что get и set не были ограничены ключевыми словами в Javascript, поэтому я смущен относительно того, что я делаю неправильно.

+1

Звучит как ошибка в любой среде, в которой вы ее запускаете. Копирование и вставка кода в Chrome работает отлично. –

+0

Просто проверено и работает на Chrome. Похоже, эта ошибка появляется только в 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 и машинописный синтаксис. –

Смежные вопросы