第一种:
function EventHandlers() {}
EventHandlers.prototype = Object.create(null);
this._events = new EventHandlers();
第二种:this._events = {};
第一种:
function EventHandlers() {}
EventHandlers.prototype = Object.create(null);
this._events = new EventHandlers();
第二种:this._events = {};
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答889 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
提到性能一般指时间,广义上确实也包含空间,但一般不特殊说明时就单指时间。
但文章里说的有点儿问题,这种写法不是跟
obj = {}
比更快,而是跟obj = Object.create(null)
比更快(你截图里上面那段英文注释明晃晃的写着呢)。跟obj = {}
压根不用比、一定是obj = {}
最慢,原因很简单,因为原型链上的成员还要被拷贝,这也有额外的开销。其实这里你现在已经可以忽略了,你看的这篇应该发布时间很早了(估计是 2016 年底到 2017 年初这个时间范围内写的),这还是 Node.js 6.x 时代前的做法,那时候 V8 还没对
Object.create
做优化,所以有这种还要用一个自定义空类型 hacked 的写法。实际上你要去看 Node.js 8.x 之后的源码,会发现这个地方已经又改回成
Object.create(null)
了。