如何让Object.assign与6to5 polyfill一起使用?

时间:2015-02-05 14:09:47

标签: ecmascript-6 babeljs

我正在尝试使用Object.assign中的ES6,但它总是undefined。这是我正在使用它的文件:

var Dispatcher = require('./dispatcher.js');

export default Object.assign(Dispatcher.prototype, {
    handleViewAction(action) {
        this.dispatch({
            source: 'VIEW_ACTION',
            action: action
        });
    }
});

以下是我用gulp代码的transpile任务:

var browserify = require('browserify');
var reactify = require('reactify');
var source = require('vinyl-source-stream')
var to5 = require('6to5ify');

module.exports = function(gulp, config) {
    gulp.task('browserify', function() {
        browserify(config.app.entry, {debug: true})
            .add(require.resolve('6to5/polyfill'))
            .transform(to5)
            .transform(reactify)
            .bundle()
            .pipe(source(config.app.bundleName))
            .pipe(gulp.dest(config.app.bundle));
    });
};

我的Object有效,但assignundefined。我做错了什么?

1 个答案:

答案 0 :(得分:1)

Babeljs(以前为6to5)不会变换或填充Object.assign。

您需要使用其他polyfill库。 2个热门图书馆是core-jsobject-assign

使用 core-js ,您可以这样做:

require('core-js');
Object.assign({}, {a:1});

var core = require('core-js/library');
var result = core.Object.assign({}, {a:1});

使用 object-assign

var _assign = require('object-assign');
var result = _assign({}, {a:1});

但是当然还有很多其他的库也会这样做。