为什么NodeJS util.inherits函数中的'super_'属性被添加到构造函数中?

时间:2015-01-08 23:21:43

标签: javascript node.js oop inheritance prototype

我正在研究JavaScript中继承的一些不同技巧。我一直在使用NodeJS util.inherits函数来处理我的最新项目。我想知道:

  • 为什么在构造函数而不是原型上设置super_属性?
  • 并不是更有意义的是为它分配超级构造函数的原型值吗?因为始终可以从原型constructor属性?
  • 中检索构造函数

所以不要这样:

constructor.super_ = superConstructor;
    constructor.prototype = Object.create(superConstructor.prototype, {
        constructor: {
            value: constructor,
            enumerable: false
        }
    });

就是这样:

    constructor.prototype = Object.create(superConstructor.prototype, {
        constructor: {
            value: constructor,
            enumerable: false
        },
        super_:{
            value: superConstructor.prototype,
            enumerable: false
        }
    });

这样调用超级函数要容易得多,因为而不是:

 this.constructor.super_.prototype.someFunction.call(this);

它会变成这样:

this.super_.someFunction.call(this);

这对我来说更有意义,但如果我错过了什么,我很好奇。 我也做了JSFiddle showing this implementation.

预先感谢您的回复!

0 个答案:

没有答案