gpt4 book ai didi

javascript - 设置 Object.prototype.__proto__ 而不仅仅是 Object.prototype?

转载 作者:行者123 更新时间:2023-11-29 18:05:38 24 4
gpt4 key购买 nike

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

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

里面有这段代码:

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

这应该将 Door 对象的原型(prototype)设置为 event.EventEmitter 的原型(prototype)。

我相信我知道什么是 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

所以原型(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

关于javascript - 设置 Object.prototype.__proto__ 而不仅仅是 Object.prototype?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31474864/

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