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

What's the idea behind creating objects using Object.assign

本文关键字:是什么 背后 Object assign 创建对象 使用      更新时间:2023-09-26

我正在阅读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上。什么好主意吗?

它只是基于其原型创建Dispatcher的副本。

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