Подтвердить что ты не робот

IE11 дает ошибку SCRIPT1002 при определении класса в javascript

У меня есть некоторые проблемы с IE11 и статическим классом javascript, который я написал.

Ошибка, которую я получаю:

SCRIPT1002: Синтаксическая ошибка rgmui.box.js(6,1)

Что указывает на:

// ===========================================
// RGMUI BOX
// Static class

class RgMuiBox {
^

Итак, я предполагаю, что я определяю этот класс не так? Каков правильный способ сделать это?

Я нашел сообщение о SO, которое, похоже, указывает, что проблема ES5 vs ES6 - и я полагаю, что IE11 не поддерживает ES6?

Чтобы быть полным, это то, что у меня (упрощенное):

class RgMuiBox {
    static method1() {
    // .. code ..
    }
}

Спасибо!

4b9b3361

Ответ 1

Ненависть к возобновлению такой старой проблемы, но она по-прежнему показывает высокие результаты, поэтому я добавлю то, что узнал:

Чтобы повторить то, что @Mikey и @REJH сказали, классы не распознаются IE11.

Тем не менее, такие инструменты, как Babel, позволят вам перевести классы во что-то, что будет работать в IE11.

Ответ 2

@Майки прав. IE11 не распознает этот синтаксис для классов, потому что спецификация ES6: https://kangax.github.io/compat-table/es6/

class RgMuiBox {
    static method1() {
    // .. code ..
    }
}

Я все еще не уверен, является ли следующий способ правильным для определения статического класса, но он работает:

var RgMuiBox = {};
  RgMuiBox.method = function() {
    // ....
  }

Просто выложите это здесь, чтобы у этого вопроса был какой-то ответ, который мог бы помочь людям начать работу. Если есть альтернативы вышесказанному, я хотел бы услышать о них!

Ответ 3

Пример статического класса

var _createClass = (function () {
    function defineProperties(target, props) {
        for (var i = 0; i < props.length; i++) {
            var descriptor = props[i];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor) descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
        }
    }
    return function (Constructor, protoProps, staticProps) {
        if (protoProps) defineProperties(Constructor.prototype, protoProps);
        if (staticProps) defineProperties(Constructor, staticProps);
        return Constructor;
    };
})();

function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
        throw new TypeError("Cannot call a class as a function");
    }
}

var StaticClass = (function () {
    function StaticClass() {
        _classCallCheck(this, StaticClass);
    }

    _createClass(StaticClass, null, [{
        key: "method1",
        value: function method1() {
            // .. code ..
        }
    }]);

    return StaticClass;
 })();