我正在阅读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
。有什么想法吗?
答案 0 :(得分:1)
它只是根据原型创建了Dispatcher
的副本。
如果你要做AppDispatcher = Dispatcher;
,然后你改变AppDispatcher
,你也会改变Dispatcher
。在这种情况下,assign
只创建一个安全副本,然后让您为该副本分配属性。