IE11 gives SCRIPT1002 error when defining class in

2019-03-13 07:56发布

I have some trouble with IE11 and a static javascript class I wrote.

The error I get is:

SCRIPT1002: Syntax error rgmui.box.js (6,1)

Which points to:

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

class RgMuiBox {
^

So I'm guessing I'm defining this class in the wrong way? What's the correct way of doing this?

I found a post on SO that seems to point out that the issue is ES5 vs ES6 - and I figure IE11 doesn't support ES6?

Just to be complete, this is what I have (simplified):

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

Thanks!

3条回答
We Are One
2楼-- · 2019-03-13 08:05

@Mikey is right. IE11 does not recognize this syntax for classes because ES6 spec: https://kangax.github.io/compat-table/es6/

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

I'm still not sure if the following is the correct way to define a static class but it works:

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

Just putting it out here so this question has some sort of an answer that might help people get going. If there are alternatives to the above I like to hear about those!

查看更多
该账号已被封号
3楼-- · 2019-03-13 08:14

Static class Example

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;
 })();
查看更多
在下西门庆
4楼-- · 2019-03-13 08:22

Hate to reopen such an old issue, but it still shows up high in the results, so I'll add what I found out:

To reiterate what @Mikey and @REJH said, classes are not recognized by IE11.

That said, tools like Babel will allow you to translate classes into something that will run on IE11.

查看更多
登录 后发表回答