在node.js中扩展类的不同方式

在node.js中扩展类的不同方式,第1张

在node.js中扩展类的不同方式

我在看expressjs的源代码

你可能也想看看这个问题如何

app
应该工作。

utils-merge
上面和做类似的事情之间有什么区别:

var util = require('util');....util.inherit(app, proto);util.inherit(app, EventEmitter);

他们在做完全不同的事情:

utils-merge
将属性从源对象合并到目标对象。

实用程序继承

将原型方法从一个构造函数继承到另一个构造函数。 构造函数的原型将设置为从superConstructor创建的新对象。

还请阅读他们的
资料!

app
(同时是用于奇数的原因的函数)是不是一个构造,但应该是一个(纯)对象-的 实例
所作
createApplication
。因此,这里没有办法进行“类继承”。而且,您不能
utils.inherits
在同一个构造函数上多次使用它,因为它确实会
覆盖
.prototype
属性

取而代之的是,

mixin
功能将只是复制所有属性
proto
,然后所有属性从
EventEmitter.prototype
app
对象。

而且这仍在尝试扩展属性吗?我有点在这里迷路:

app.request = { __proto__: req, app: app }; // what is the equivalent

for this in util?
app.response = { proto: res, app: app };

Object.create
为此请使用本机函数:

app.request = Object.create(req);app.request.app = app;app.response = Object.create(res);app.response.app = app;

如果是这样,即使

util.inherit
使用它,仍然可以使用吗?

app.request = util.inherit(app, req) // Or something like that?

不,真的不是。

jshint说

__proto__
很可惜。

是的,您应该

Object.create
改用。但是非标准
__proto__
可能会保留以保持兼容性。

另外我也看到了吗?

var res = module.exports = {  __proto__: http.ServerResponse.prototype};

可以吗?

var res = module.exports = util.inherits...??

不,同样是以下情况

Object.create

var res = module.exports = Object.create(http.ServerResponse.prototype);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5029329.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存