我正在使用babel和gulp并在ES6中创建一个简单的DOM库。但是在运行之后,当我要使用它时,我在chrome控制台中获得了Object.assign is not a function
。
这是gulp代码
gulp.task('scripts', function() {
return gulp.src(src + 'js/*.js')
.pipe(babel())
.pipe(concat('main.js'))
.pipe(gulp.dest(dest + 'js'));
});
这是类文件
class DOM {
constructor( selector ) {
var elements = document.querySelectorAll(selector);
this.length = elements.length;
Object.assign(this, elements);
}
...
}
const dom = selector => new DOM(selector);
我正在客户端使用它,如dom('#elId');
答案 0 :(得分:23)
我怀疑您已经知道,Google Chrome使用V8,它支持ECMAScript第5版。 Object.assign
在ECMAScript第6版中引入。
要使用这些添加内容,您需要Babel提供的include the ES6 polyfill:
这将模拟完整的ES6环境。 [...]
可从
calculations()
npm版本中的browser-polyfill.js
文件获取。这需要包含在所有编译的Babel代码之前。您可以将其添加到已编译的代码中,也可以将其包含在babel-core
之前。
答案 1 :(得分:11)
babel-core
: $ npm install babel-core --save-dev
polyfill
模块导入您的js: import 'babel-core/polyfill';