JavaScript如何处理继承?

JavaScript如何处理继承?,javascript,node.js,Javascript,Node.js,我遇到了为继承提供代码的: module.exports = function(db) { this.db = db; }; module.exports.prototype = { extend: function(properties) { var Child = module.exports; Child.prototype = module.exports.prototype; for(var key in properties) {

我遇到了为继承提供代码的:

module.exports = function(db) {
    this.db = db;
};
module.exports.prototype = {
   extend: function(properties) {
      var Child = module.exports;
      Child.prototype = module.exports.prototype;
      for(var key in properties) {
        Child.prototype[key] = properties[key];
     }
    return Child;
 },
  setDB: function(db) {
     this.db = db;
 },
 collection: function() {
    if(this._collection) return this._collection;
    return this._collection = this.db.collection('fastdelivery-content');
  }
}
  • Child.prototype=module.exports.prototype需要什么?因为子模块是module.exports,所以它应该具有相同的原型。那我们为什么要这样做

  • 我们正在重写module.exports.prototype,并在其中使用module.exports.prototype。它是如何工作的?这不是一种循环依赖吗


  • 这段代码实际上没有多大意义。你到底在哪里找到的,你能分享一个链接吗?我不会使用这些技术。教程真的很糟糕!使用另一个。关于(1)你完全正确。我已经更新了链接。请看一看。本教程中的单元测试断言新属性/方法已添加到新类中。。。但它没有任何测试会注意到新类与旧类相同,而旧类只是被意外修改过。即使他们的控制器扩展单元测试(使用实际工作的非继承扩展代码)会注意到这一点。作者似乎不理解JavaScript中的引用/指针语义。(除非我也误解了什么…@jermy Banks是的,我可以在那个教程的评论部分看到这个问题。可能是教程不完全正确。但由于我对nodejs还不熟悉,我一直在想我不会明白。