Object.assign不是一个函数

时间:2015-08-01 17:39:06

标签: javascript gulp ecmascript-6 babeljs

我正在使用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');

2 个答案:

答案 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)

  1. 安装babel-core
  2. $ npm install babel-core --save-dev

    1. polyfill模块导入您的js:
    2. import 'babel-core/polyfill';

      1. 使用babel编译代码!