Object.assign不是一个函数

TIJ*_*TIJ 14 javascript ecmascript-6 gulp babeljs

我正在使用babel和gulp,并在ES6中创建一个简单的DOM库.但是在运行之后,当我要使用它时,我得到了Object.assign is not a functionChrome控制台.

这是gulp代码

gulp.task('scripts', function() {
    return gulp.src(src + 'js/*.js')
      .pipe(babel())
      .pipe(concat('main.js'))
      .pipe(gulp.dest(dest + 'js'));
});
Run Code Online (Sandbox Code Playgroud)

这是类文件

class DOM {
    constructor( selector ) {
        var elements = document.querySelectorAll(selector);

        this.length = elements.length;

        Object.assign(this, elements);
    }

    ...

}

const dom = selector => new DOM(selector);
Run Code Online (Sandbox Code Playgroud)

我正在客户端使用它 dom('#elId');

Jac*_*din 27

我怀疑你已经知道,谷歌Chrome使用V8,它支持ECMAScript第5版.Object.assign在ECMAScript第6版中介绍.

要使用这些添加物,您需要包含 Babel提供的ES6填充物:

这将模拟完整的ES6环境.[...]

可从npm版本中的browser-polyfill.js文件中获取babel-core.这需要包含在所有编译的Babel代码之前.您可以将其添加到已编译的代码中,也可以将其包含在<script>之前的代码中.


Amo*_* Wu 12

  1. 安装babel-core:

$ npm install babel-core --save-dev

  1. polyfill模块导入您的js:

import 'babel-core/polyfill';

  1. 使用babel编译代码!