我试图Object.assign()
在由Babel编译的ES6 Web应用程序中使用webpack,但出现错误:
Uncaught TypeError: Object.assign is not a function
我已经在使用babel-loader
ES6到ES5了,所以我所有其他的ES6代码都可以使用。但是,Object.assign()
只有import "babel-core/polyfill"
在代码库中也可以使用。我看到我也可以通过导入babel-runtime来解决此问题,但是我想理解为什么 Object.assign()
需求比babel-loader
执行的要多-不应babel-loader
预处理所有内容,包括Object.assign()
吗?
我遇到了同样的问题。我认为在得到babel支持的情况下,可以安全使用所有ES2015 +功能。但是如上所述,babel polyfill仅填充语法,而不包含函数(Object.assign,Array.includes仅举几例)。对于Object.assign,我更喜欢不使用polyfill,而是使用散布运算符。在这种情况下,如果未找到babel,则实际上会填充Object.assign。看一下这段代码:
It will be tranpiled by babel to:
For spread operator babel tries to used native Object.assign method and use polyfill if it was not found. But the explicit Object.assign method is left unchanged ¯\_(ツ)_/¯