由于一些遗留产品需要 IE8 兼容模式,我们不能使用Object.defineProperty调用。
我们正在使用 ES6 语法从 TypeScript 模块构建一个大包。如果这很重要,我们没有使用实时模块加载、热重载、动态模块加载和任何类似的技术。
我知道官方限制和此线程中的讨论。我正在尝试应用一个不太好的修复/解决方法,如下所示。
我已经检查了 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 模块规范专家,所以我想问一下这种变化究竟会产生什么影响?在这种特定情况下这样做安全吗?