nodejs继承实现

直接上代码/lib/util.js

第634行

1
2
3
4
5
6
7
8
9
10
11
exports.inherits = function(ctor, superCtor) {
ctor.super_ = superCtor;
ctor.prototype = Object.create(superCtor.prototype, {
constructor: {
value: ctor,
enumerable: false,
writable: true,
configurable: true
}
});
};

从源码看也是使用原型的方式实现了继承,不过在ctor.super_ = superCtor;里面设置了一个super_的属性指向
被继承的构造函数,同时在继承超级构造的原型附加了一些构造的成员属性而创建的对象。

至于constructor里面的这些属性,我目前只能猜猜是用于继承追溯或者构造函数的属性声明。
后面详细研究了node的util其他代码或许会有一个明确的答案。