2016-05-12 12 views
3

Ich habe einige Probleme mit IE11 und eine statische Javascript-Klasse, die ich schrieb.IE11 gibt SCRIPT1002 Fehler beim Definieren der Klasse in Javascript

Der Fehler, den ich bekommen ist:

SCRIPT1002: Syntaxfehler rgmui.box.js (6,1)

Welche zu den Punkten: So

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

class RgMuiBox { 
^ 

I Ich vermute, ich definiere diese Klasse auf die falsche Art und Weise? Was ist der richtige Weg, dies zu tun?

Ich habe einen Beitrag zu SO gefunden, der darauf hinweist, dass das Problem ES5 vs ES6 ist - und ich denke, IE11 unterstützt ES6 nicht?

nur vollständig zu sein, das ist, was ich habe (vereinfacht):

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

Dank!

+2

Nach [ES6 Kompatibilitätstabelle] (https://kangax.github.io/compat-table/es6/) werden Klassen nicht von IE11 anerkannt. – Mikey

Antwort

4

Hass so ein altes Thema wieder zu öffnen, aber es zeigt immer noch hoch in den Ergebnissen, ich werde so hinzufügen, was ich herausgefunden:

Um es zu wiederholen, was @Mikey und @REJH sagten Klassen werden nicht erkannt von IE11.

Das heißt, Tools wie Babel ermöglichen es Ihnen, Klassen in etwas zu übersetzen, das auf IE11 ausgeführt wird.

+0

Babel arbeitete unerwartet genial! Vielen Dank, Mann. –

3

@Mikey hat Recht. IE11 nicht erkennt diese Syntax für Klassen, weil ES6 spec: https://kangax.github.io/compat-table/es6/

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

Ich bin immer noch nicht sicher, ob das im Anschluss an die richtige Art und Weise ist eine statische Klasse zu definieren, aber es funktioniert:

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

Wenn man es hier rausstellt, hat diese Frage eine Art Antwort, die den Menschen helfen könnte, loszulegen. Wenn es Alternativen zu den oben genannten gibt, höre ich gerne von denen!

0

Statische Klasse Beispiel

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; 
})(); 
Verwandte Themen