我正在使用ES6 + babel,并带有“iife-wrap”插件。我尝试重新制作之前创建的插件(form-validation)。我正在尝试检查数据是否为对象。对于es5,只需使用
typeof blah === 'object'
或string、function等
即可。但是,如果我将其放在es6上,它会产生一个错误:Uncaught TypeError: _typeof不是函数。以下是我代码的一部分示例。let es6function = () => {
return 'asd';
}
console.log(typeof es6function)
class Person {
}
let tryThis = new Person()
console.log(tryThis instanceof Person)
ES5: 后编译
;
(function () {
'use strict';
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var _typeof = typeof Symbol === "function" && _typeof(Symbol.iterator) === "symbol" ? function (obj) {
return typeof obj === 'undefined' ? 'undefined' : _typeof(obj);
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof(obj);
};
var es6function = function es6function() {
return 'asd';
};
console.log(typeof es6function === 'undefined' ? 'undefined' : _typeof(es6function));
var Person = function Person() {
_classCallCheck(this, Person);
};
var tryThis = new Person();
console.log(tryThis instanceof Person);
})();
非常感谢您的帮助。谢谢。
var _typeof = typeof Symbol === "function" && _typeof(Symbol.iterator) === "symbol"
。_typeof
调用不应该在这里。现在,为什么只有在包含插件时才会发生这种情况,我无法说。可能是 Babel 中的一个 bug。它肯定与 ES6 本身无关。 - Felix Kling