2016-05-12 2 views
3

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

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

SCRIPT1002: Ошибка синтаксиса rgmui.box.js (6,1)

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

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

class RgMuiBox { 
^ 

Так я Думаю, я определяю этот класс не так? Каков правильный способ сделать это?

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

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

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

Спасибо!

+2

Согласно [ES6 Таблица совместимости] (https://kangax.github.io/compat-table/es6/), классы не распознаются IE11. – Mikey

ответ

4

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

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

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

+0

Бабель работал неожиданно потрясающе! Спасибо, тонну. –

3

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

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

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

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

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

0

Статический класс Пример

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; 
})(); 
Смежные вопросы