在node里怎么实现继承呢?
发布于 10 年前 作者 perny 15009 次浏览 最后一次编辑是 8 年前

nodejs 实现继承 var util=require(‘util’);

function base(){ … }

base.prototype.showName=function(){ … }

function sub(){ … }

util.inherits(sub,base);

//实现对象sub继承base对象,但是只继承base.prototype.showName(); var objbase= new base();//实例化话对象base var objsub=new sub();//实例化对象sub

以上是在网上搜到的,但是有两个文件,一个base.js、一个sub.js 怎么互相实现继承呢?本人菜鸟请大侠们指教,多谢!

12 回复

。。。。,应该问js怎么继承,最简单的就是原型继承

function object(o){
  function F(){};
  F.prototype = o;
  return new F();
}
sub = object(base)

用mootools框架

function Base() {
}

function Sub() {
    Base.call(this)
}

util.inherits(Sub, Base);

我在node中用的继承也不知道对不对,你可以借鉴一下,因为一个模块实际上就是一个封装,和普通的类没啥区别,只不过需要继承的地方要引入被继承的类,你可以参考下,不保证正确哦

《JavaScript: The Good Parts》说过这个问题。如果你要自己来实现继承,那么有很多中做法,在 ES5 中,你可以直接用 Object.create(ES3 中需要自己实现,实现方式为 1# 的实现方式)来实现原型继承,不过原型继承理解起来并不直白(牵扯到一些容易混淆的概念,例如 Function.prototype、函数的 prototype 属性、通过构造函数构造的对象的原型对象等)。最直白的一种继承(且可以实现私有成员)是通过“模块模式”实现,无需使用到原型,详细你可以看看 http://name5566.com/4690.html 关于继承的那一部分。

@dlutwuwei @perny 哈哈,大宗师道格拉斯就是这样实现Object.create函数的 如果我们可以使用__proto__ 就更加简洁了:

function(supC){
    return {'__proto__':supC}
}

但是这只是如果,不符合规范。哈哈 既然咱的大宗师已经写好了,咱就用吧.嘿嘿 但是Object.create()比new 的在性能上差的远了。:)

感谢你的解答,但是nodejs的工具模块中已经实现了继承util.inherits(sub,base);//就是这个方法,我是想知道怎样在不同的js文件实现相互继承

你的方法我试过,好像不行啊

node有自己的继承模块

util.inherits 的例子不是很清楚了吗

回到顶部