gpt4 book ai didi

javascript - 为什么要给自己赋值原型(prototype)

转载 作者:行者123 更新时间:2023-11-29 21:49:03 25 4
gpt4 key购买 nike

我在 Flux 的文档中发现了一个有趣的 Object.assign 用例,即 Dispatcher 在其架构中的示例:

var assign = require('object-assign');

var _callbacks = [];

var Dispatcher = function() {};
Dispatcher.prototype = assign({}, Dispatcher.prototype, {
register: function(callback) {
_callbacks.push(callback);
return _callbacks.length - 1; // index
}
});

来源:http://facebook.github.io/flux/docs/todo-list.html#creating-a-dispatcher

将扩展原型(prototype)分配给同一对象的原型(prototype)的原因是什么?

最佳答案

我猜他们只是想扩展原型(prototype)。当Object.assign (npm object-assign 是一个 pollyfill)是这样使用的:

assign({}, Dispatcher.prototype, {/* ... */});

它返回一个新对象,Dispatcher.prototype 的扩展结果(原型(prototype)中的属性被复制到新对象),但是原始 Dispatcher.prototype不受影响。因此,为了实际扩展它,他们必须将原型(prototype)与新的扩展对象一起重新分配。

然而,避免混淆赋值会更有意义:

assign(Dispatcher.prototype, {/* ... */});

以上只是扩展原型(prototype)而不需要重新分配。

关于javascript - 为什么要给自己赋值原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30093608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com