javascript – 设置Object.prototype .__ proto__而不仅仅是Object.prototype?

我正在看有关node.js事件模块的这篇文章:

http://www.sitepoint.com/nodejs-events-and-eventemitter/

在其中有这个代码:

Door.prototype.__proto__ = events.EventEmitter.prototype;

据说将Door对象的原型设置为event.EventEmitter的原型.

我相信我知道difference between prototype and proto是什么
但是这段代码完全让我困惑.所以我的问题是,而不是使用:

Door.prototype.__proto__ = events.EventEmitter.prototype;

该文章的作者不只是使用这行代码:

Door.prototype= events.EventEmitter.prototype;
这段代码

Door.prototype.__proto__ = events.EventEmitter.prototype

使Door.prototype继承自events.EventEmitter.prototype.

所以原型链就像

doorInstance -> Door.prototype -> events.EventEmitter.prototype

这种方法类似于

Door.prototype = Object.create(events.EventEmitter.prototype)

不同之处在于修改[[Prototype]]不会创建新对象,但它会对性能产生很大的负面影响.

相反,这段代码

Door.prototype = events.EventEmitter.prototype

使Door实例直接从events.EventEmitter.prototype继承.

也就是说,您将无法在Door.prototype中添加特定方法而不会污染events.EventEmitter.prototype.

https://stackoverflow.com/questions/31474864/setting-object-prototype-proto-instead-of-just-object-prototype

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 设置Object.prototype .__ proto__而不仅仅是Object.prototype?