gpt4 book ai didi

javascript - Object.create 和继承

转载 作者:行者123 更新时间:2023-11-30 09:02:16 26 4
gpt4 key购买 nike

以下示例中生成的对象之间有什么区别:

var EventEmitter = require('events').EventEmitter;

var oProto = Object.create(EventEmitter.prototype);
var oProto2 = Object.create(oProto);

var oConstr = Object.create(new EventEmitter);
var oConstr2 = Object.create(oConstr);

我想 oConstroConstr2 将在 EventEmitter 构造函数中设置任何属性,但是还有其他有意义的区别吗?

最佳答案

您的代码具有误导性。当它不是构造函数时,您可以使用术语 oConstr

oProto -> EventEmitter.prototype -> Object.prototype -> null
oProto2 -> oProto -> EventEmitter.prototype -> Object.prototype -> null

var temp = new EventEmitter;

oConstr -> temp -> EventEmitter.prototype -> Object.prototype -> null
oConstr2 -> oConstr -> etc

唯一的区别是 temp 不仅仅是一个继承自 EventEmitter 的对象,它还有自己的属性,通过调用 EventEmitter.constructor.call 得到增强(温度)

我个人建议您使用 EventEmitter.prototype 并忽略 new EventEmitter

就我个人而言,我从未继承过 EventEmitterI mix it in

关于javascript - Object.create 和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8303455/

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