使用Object.assign创建对象背后的想法是什么

时间:2015-09-17 04:24:32

标签: javascript

我正在阅读this Flux教程并在那里创建对象:

var AppDispatcher = assign({}, Dispatcher.prototype, {

  /**
   * A bridge function between the views and the dispatcher, marking the action
   * as a view action.  Another variant here could be handleServerAction.
   * @param  {object} action The data coming from the view.
   */
  handleViewAction: function(action) {
    this.dispatch({
      source: 'VIEW_ACTION',
      action: action
    });
  }

});

他们通过polyfill使用Object.assign。由于Object.assign将所有属性复制到对象而不是Object.create(prototype),我想知道他们的动机是将属性直接复制到AppDispatcher。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

它只是根据原型创建了Dispatcher的副本。

如果你要做AppDispatcher = Dispatcher;,然后你改变AppDispatcher,你也会改变Dispatcher。在这种情况下,assign只创建一个安全副本,然后让您为该副本分配属性。