在我使用babel转换进入Browserify的入口点导入babel-polyfill之后,IE11仍在抱怨Object.assign。除了Object.assign之外,我的项目还使用了许多其他新的API,如Number.isNan,HTMLElement.contains,KeyboardEvent.key等。
我似乎无法找到有关通过此插件添加哪些polyfill的任何文档。有谁知道这个插件填充了哪些API,或者我在哪里可以找到全面的列表?我能找到的就是这句话:
"这将模拟完整的ES6环境"
似乎情况并非如此,因为Object.assign仍未定义。
答案 0 :(得分:0)
查看github上的source,它执行字符串填充方法和数组方法。换句话说,您引用的报价是营销说话。使用另一种填充物来制作你想要的东西。填充很多东西并不是非常困难,例如。
Number.isNaN = Number.isNaN || function(n) { return n !== n; };
来自MDN
if (typeof Object.assign != 'function') {
(function () {
Object.assign = function (target) {
'use strict';
if (target === undefined || target === null) {
throw new TypeError('Cannot convert undefined or null to object');
}
var output = Object(target);
for (var index = 1; index < arguments.length; index++) {
var source = arguments[index];
if (source !== undefined && source !== null) {
for (var nextKey in source) {
if (source.hasOwnProperty(nextKey)) {
output[nextKey] = source[nextKey];
}
}
}
}
return output;
};
})();
}
答案 1 :(得分:0)
在查看babel-polyfill的来源时,它就在那里:
// 19.1.3.1 Object.assign(target, source)
var $export = _dereq_(33);
$export($export.S + $export.F, 'Object', {assign: _dereq_(66)});
},{"33":33,"66":66}],178:[function(_dereq_,module,exports){
var $export = _dereq_(33)
您使用的是哪个版本的babel?你确定在browserify中包含了正确的babel插件吗?