JavaScript: Firefox отказывается от ключевого слова class, а Chrome - нет - PullRequest
1 голос
/ 09 сентября 2011

Я пробовал этот фрагмент кода JavaScript:

class User(name) {
    this.name = name;
}

var class = new User("Kimo");

Выше было использовано как есть в книге JavaScript, и я просто играл с ней.

firefox 6.0.2 (из консоли) отклонил ключевое слово 'class' в качестве имени переменной (пожаловался на синтаксическую ошибку), в то время как chrome 13.0.782.220m (из инструмента разработчика) вообще не жаловался.

Это заставляет меня задуматься, какой из них правильный? Поскольку понятие класса в JavaScript не существует или отличается от других языков ООП. С другой стороны, было бы разумнее запретить разработчикам использовать его.

Я хотел бы знать, почему это разные подходы между Firefox и Chrome (я знаю, что они используют разные движки).

Спасибо

Ответы [ 3 ]

3 голосов
/ 09 сентября 2011

Прежде всего, вы не можете создать класс в Javascript, как это.Либо создайте объект:

var User = {...};

или функцию конструктора:

function User() {...}

class зарезервированное слово из about.com (некоторыене перечислено в ECMA 262, но присутствует в JScript) и MDC - зарезервировано для будущего использования.Это правда, что JavaScript не имеет классов на данный момент.Но слово зарезервировано в том смысле, что когда-нибудь оно может иметь такое.

Mozilla более строг в отношении правил, чем другие браузеры, и выдает синтаксическую ошибку.

Кроме того:

JavaScript - это не просто объект Ориентированный Язык программирования (ООП), это Язык программирования на основе прототипов .

С другой стороны, он можетбудьте мудрее, чтобы запретить разработчикам использовать его.

Поскольку JavaScript интерпретируется браузером, я не думаю, что использование зарезервированных слов может быть запрещено.В скомпилированном коде у вас есть компилятор, который не согласен с вами о таких вещах, прежде чем продукт будет готов к использованию.

Еще одна вещь - вы можете написать JavaScript-код в редакторе без возможности сообщить вам, что вашВ коде есть ошибки или что вы используете зарезервированные слова для переменных.

0 голосов
/ 07 июля 2015

Firefox еще не реализовал поддержку класса, если вы проверите поддержку браузера ecma6 aka javascript (это новый релиз, который будет иметь больше возможностей, таких как class: D), вы увидите, что Class for mozilla невозможен , будем надеяться, что скоро будет доступно, ecma 6 находится на стадии бета-тестирования, так что пройдет некоторое время, пока все браузеры не поддержат все особенности

0 голосов
/ 09 сентября 2011

Ошибка в правильном поведении.Класс является ограниченным ключевым словом в ECMAScript.

...