为什么Object.assign在Safari 8.0.7上似乎不起作用?

为什么Object.assign在Safari 8.0.7上似乎不起作用?,safari,ecmascript-6,Safari,Ecmascript 6,我们正在使用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'; }); 这显然是在点击浏览器之前编译的。它在最

我们正在使用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):


有什么想法吗?我试着在互联网上搜索这个问题,但没有结果。

Object.assign
在Chrome中工作,因为Chrome本机支持它
babel loader本身只将ES6语法转换为ES5语法,它不做任何事情使ES6库功能可用。使用Webpack最简单的方法是更改您的配置,例如

entry: 'app.js'


因此,在执行应用程序之前,Webpack还将捆绑并运行polyfill。Babel提供了
/polyfill
作为加载polyfill的简单方法,但它是可选的,因为不是每个人都想使用它,而且因为有许多polyfill可用,而Babel使用的只是其中之一。

您正在加载Babel的polyfill吗<代码>要求('babel-core/polyfill')@loganfsmyth,不是显式的。我将babel加载器与webpack结合使用(我相信babel加载器只是利用了babel core)。这能解释浏览器之间的功能差异吗?在iOS 9的mobile Safari和OSX桌面Chrome中,编译的
Object.assign
工作正常。
entry: 'app.js'
entry: ['babel-core/polyfill', 'app.js']

// Or with Babel 6:
entry: ['babel-polyfill', 'app.js']