2016-05-12 260 views
3

IE11和我写的一个静态JavaScript类有一些问题。在javascript中定义类时,IE11会出现SCRIPT1002错误

我得到的错误是:

SCRIPT1002:语法错误 rgmui.box.js(6,1)

指向:

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

class RgMuiBox { 
^ 

所以我猜猜我是以错误的方式定义这个班?这样做的正确方法是什么?

我在SO上发现了一个帖子,似乎指出问题是ES5与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; 
})(); 
相关问题