【问题标题】:IE11 gives SCRIPT1002 error when defining class in javascriptIE11 在 javascript 中定义类时出现 SCRIPT1002 错误
【发布时间】:2016-05-12 17:54:01
【问题描述】:

我在使用 IE11 和我编写的静态 javascript 类时遇到了一些问题。

我得到的错误是:

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

指向:

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

class RgMuiBox {
^

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

我发现一个关于 SO 的帖子似乎指出问题在于 ES5 与 ES6 - 我认为 IE11 不支持 ES6?

为了完整起见,这就是我所拥有的(简化):

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

谢谢!

【问题讨论】:

标签: javascript internet-explorer


【解决方案1】:

讨厌重新打开这么老的问题,但它仍然显示在结果中,所以我将添加我发现的内容:

重申@Mikey 和@REJH 所说的,IE11 无法识别类。

也就是说,Babel 之类的工具将允许您将类转换为可在 IE11 上运行的内容。

【讨论】:

  • 谢谢你拯救了我的一天。这 100% 有效。我刚刚将我的课程转换为 Babel 的内容并再次重新保存。它现在适用于所有浏览器,甚至 Safari。
  • 你能给我推荐一种在开发环境中使用 Babel 的方法吗(ng serve)
【解决方案2】:

@Mikey 是对的。 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;
     })();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 2018-09-20
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      相关资源
      最近更新 更多