Object.assign 不是函数

Object.assign is not a function(Object.assign 不是函数)
本文介绍了Object.assign 不是函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

I'm using babel with gulp and create a simple DOM library in ES6. But after running and when i'm going to use it, I got the Object.assign is not a function in chrome console.

这是 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');

and I'm using it in client side like dom('#elId');

推荐答案

我怀疑你已经知道,谷歌浏览器使用 V8,支持 ECMAScript 第 5 版.Object.assign 在 ECMAScript 第 6 版中引入.

As I suspect you already know, Google Chrome uses V8, which supports ECMAScript 5th edition. Object.assign is introduced in ECMAScript 6th edition.

为了使用这些添加,你需要包含 Babel 提供的 ES6 polyfill:

In order to use these additions, you need to include the ES6 polyfill provided by Babel:

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

This will emulate a full ES6 environment. [...]

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

Available from the browser-polyfill.js file within a babel-core npm release. This needs to be included before all your compiled Babel code. You can either prepend it to your compiled code or include it in a <script> before it.

这篇关于Object.assign 不是函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

How do I can get a text of all the cells of the table using testcafe(如何使用 testcafe 获取表格中所有单元格的文本)
node_modules is not recognized as an internal or external command(node_modules 未被识别为内部或外部命令)
How can I create conditional test cases using Protractor?(如何使用 Protractor 创建条件测试用例?)
PhantomJS and clicking a form button(PhantomJS 并单击表单按钮)
Clicking #39;OK#39; on alert or confirm dialog through jquery/javascript?(在警报上单击“确定或通过 jquery/javascript 确认对话框?)
QunitJS-Tests don#39;t start: PhantomJS timed out, possibly due to a missing QUnit start() call(QunitJS-Tests 不启动:PhantomJS 超时,可能是由于缺少 QUnit start() 调用)