由于某些需要IE8兼容模式的旧产品,我们不能使用Object.defineProperty
调用。
我们正在使用ES6语法从TypeScript模块构建单个大型捆绑包。如果那很重要,我们就不会利用实时模块加载,热重新加载,动态模块加载和任何类似的技术。
我知道这里in this thread的官方限制和讨论。我正在尝试应用不太好的修正/解决方法,如下所示。
我已经检查了Webpack创建的捆绑软件,据我所知,唯一使用的地方是当代码访问default
导出的成员时。
我已经从技术上更改了代码,以删除defineProperty
,并使用像这样的简单“一次性”字段分配。
__webpack_require__.d = function(exports, name, getter) {
if(!__webpack_require__.o(exports, name)) {
exports[name] = getter();
//Object.defineProperty(exports, name, {
// configurable: false,
// enumerable: true,
// get: getter
//});
}
};
乍看之下一切正常。但是由于我不是Webpack和ES6模块规范专家,所以我想问一下此更改的确切影响是什么?在这种特定情况下这样做安全吗?