为什么 Object.assign 在 Safari 8.0.7 上似乎不起作用?
Why does Object.assign not appear to work on Safari 8.0.7?
我们正在使用 webpack 和 babel-core 编写应用程序 5.8.25
。
在某个时间点,会发生这种情况:
someArray.map(item => {
const updatedItem = Object.assign({}, item); // silently fails here... doesn't even continue the code
updatedItem.prop = 'something cool';
});
这显然是在访问浏览器之前编译的。它在最新版本的 Chrome 和最新版本的 iOS Safari 中工作,但在 Safari 8.0.7
中,它无声地失败(没有抛出错误......只是没有超过那个线)。
然而,这按预期工作(使用 lodash):
someArray.map(item => {
const updatedItem = _.extend({}, item); // the important part
updatedItem.prop = 'something cool';
});
有什么想法吗?我尝试在互联网上搜索有关此问题的信息,但无济于事。
Object.assign
在 Chrome 中工作,因为 Chrome 本身支持它。 babel-loader
本身仅将 ES6 语法转换为 ES5 语法,它不会做任何使 ES6 库功能可用的事情。使用 Webpack 最简单的方法是更改您的配置,例如
entry: 'app.js'
至
entry: ['babel-core/polyfill', 'app.js']
// Or with Babel 6:
entry: ['babel-polyfill', 'app.js']
这样 Webpack 也会在执行您的应用程序之前捆绑和 运行 polyfill。 Babel 提供 /polyfill
作为加载 polfill 的一种简单方法,但它是可选的,因为不是每个人都想使用它,并且因为有许多可用的 polyfill 而 Babel 使用一个,core-js
只是其中之一很多。
我们正在使用 webpack 和 babel-core 编写应用程序 5.8.25
。
在某个时间点,会发生这种情况:
someArray.map(item => {
const updatedItem = Object.assign({}, item); // silently fails here... doesn't even continue the code
updatedItem.prop = 'something cool';
});
这显然是在访问浏览器之前编译的。它在最新版本的 Chrome 和最新版本的 iOS Safari 中工作,但在 Safari 8.0.7
中,它无声地失败(没有抛出错误......只是没有超过那个线)。
然而,这按预期工作(使用 lodash):
someArray.map(item => {
const updatedItem = _.extend({}, item); // the important part
updatedItem.prop = 'something cool';
});
有什么想法吗?我尝试在互联网上搜索有关此问题的信息,但无济于事。
Object.assign
在 Chrome 中工作,因为 Chrome 本身支持它。 babel-loader
本身仅将 ES6 语法转换为 ES5 语法,它不会做任何使 ES6 库功能可用的事情。使用 Webpack 最简单的方法是更改您的配置,例如
entry: 'app.js'
至
entry: ['babel-core/polyfill', 'app.js']
// Or with Babel 6:
entry: ['babel-polyfill', 'app.js']
这样 Webpack 也会在执行您的应用程序之前捆绑和 运行 polyfill。 Babel 提供 /polyfill
作为加载 polfill 的一种简单方法,但它是可选的,因为不是每个人都想使用它,并且因为有许多可用的 polyfill 而 Babel 使用一个,core-js
只是其中之一很多。