0
首先是非法的构造,我想是说,我真的不知道我怎么能解释一下我做才能得到的头衔(uncaught TypeError: Illegal constructor
)中提到的错误。我正在使用gulpfile来编译我的Ecmascript 6为纯Javascript。我gulpfile看起来是这样的:与EcmaScript的6
var gulp = require('gulp');
var concat = require('gulp-concat');
var babel = require('gulp-babel');
gulp.task('compile', function() {
return gulp.src(['resources/assets/js/*.js', 'resources/assets/js/components/*.js'])
.pipe(babel({
presets: ['es2015']
}).on('error', logError))
.pipe(concat('bundle.js'))
.pipe(gulp.dest('public/js'));
});
gulp.task('watch', function() {
gulp.watch('resources/assets/js/**/*', ['compile']);
})
gulp.task('default', ['watch']);
function logError(err) {
console.log(err);
}
我有所有的文件被连接到一个文件(bundle.js),被用巴贝尔编译后的文件系统。
在浏览器控制台(或者Chrome或Firefox),将出现错误,并且它位于下一行:
var _this = _possibleConstructorReturn(this, (Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).call(this, element));
这是本非编译代码:
class Dropdown extends Node {
constructor(element) {
super(element);
this.registerEvents(['click', 'change', 'blur']);
}
onClick() {
this.$element.addClass('clicked');
}
}
这是同一类的编译代码:
var Dropdown = function (_Node) {
_inherits(Dropdown, _Node);
function Dropdown(element) {
_classCallCheck(this, Dropdown);
var _this = _possibleConstructorReturn(this, (Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).call(this, element));
_this.registerEvents(['click', 'change', 'blur']);
return _this;
}
_createClass(Dropdown, [{
key: 'onClick',
value: function onClick() {
this.$element.addClass('clicked');
}
}]);
return Dropdown;
}(Node);
我不使用export default Dropdown
因为我不是在导入其他模块的模块(这是没有必要,因为每个文件转换为一个文件,这里的一切是访问)。
我做了一些研究,为什么peoeple得到这个错误是因为当时那里没有被允许大写字母的唯一原因。我没有发现这个错误的原因。有人有一个想法,为什么我得到这个错误?并且有人有解决方案吗?
什么是'Node'?如果它是DOM的'Node',那么你不能用JavaScript来扩展它。 –
如果你不能实例化'Node'(你不能),你显然不能实例化子类。 – estus
你需要导入你需要扩展或者是它也行,如果有要扩展的类在同一个文件(所以没有'出口默认superClass')定义的文件? – Galago