Nodejs 在node里怎么实现继承呢?

Nodejs 在node里怎么实现继承呢?

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 怎么互相实现继承呢?本人菜鸟请大侠们指教,多谢!


13 回复

当然可以。为了在两个不同的文件中实现继承,你可以将基类定义在一个文件中,然后在另一个文件中导入并扩展它。以下是一个详细的步骤和示例代码:

文件结构

  • base.js - 定义基类
  • sub.js - 定义子类并继承自基类

base.js

// 基类定义
function Base() {
    // 初始化逻辑
}

Base.prototype.showName = function() {
    console.log("Base Name");
};

module.exports = Base;

sub.js

// 导入Base类
const Base = require('./base');

// 子类定义
function Sub() {
    // 调用父类构造函数
    Base.call(this);
}

// 使用util.inherits实现继承
const util = require('util');
util.inherits(Sub, Base);

Sub.prototype.showNewName = function() {
    console.log("Sub New Name");
};

module.exports = Sub;

示例使用

// main.js
const Base = require('./base');
const Sub = require('./sub');

const baseInstance = new Base();
baseInstance.showName();  // 输出 "Base Name"

const subInstance = new Sub();
subInstance.showName();   // 输出 "Base Name"
subInstance.showNewName(); // 输出 "Sub New Name"

解释

  1. Base 类

    • base.js 中定义了一个基类 Base
    • Base.prototype.showName 方法用于显示名字。
  2. Sub 类

    • sub.js 中导入了 Base 类。
    • 使用 util.inherits(Sub, Base) 来实现继承。
    • Sub.prototype.showNewName 方法是子类特有的方法。
  3. main.js

    • 创建 BaseSub 的实例,并调用它们的方法以验证继承关系。

通过这种方式,你可以在多个文件之间实现继承,并且保持代码的模块化和可维护性。


。。。。,应该问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 关于继承的那一部分。

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

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

node有自己的继承模块

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

要在Node.js中实现类的继承,可以使用内置的util.inherits方法。如果你有两个文件(例如base.jssub.js),你可以分别定义基类和子类,并在子类中通过导入基类来实现继承。

以下是一个简单的示例:

base.js

// 定义基类
function Base() {
    // 基类的构造函数
}

Base.prototype.showName = function () {
    console.log('Base Name');
};

module.exports = Base;

sub.js

const util = require('util');  // 导入util模块
const Base = require('./base');  // 导入基类

// 定义子类
function Sub() {
    // 子类的构造函数
    Base.call(this);  // 调用基类的构造函数
}

// 使用util.inherits实现继承
util.inherits(Sub, Base);

Sub.prototype.showSubName = function () {
    console.log('Sub Name');
};

module.exports = Sub;

示例代码运行

const Base = require('./base');
const Sub = require('./sub');

let baseObj = new Base();
baseObj.showName();  // 输出 "Base Name"

let subObj = new Sub();
subObj.showName();   // 输出 "Base Name"
subObj.showSubName();  // 输出 "Sub Name"

解释:

  1. util.inherits:这是Node.js中用于实现继承的简单方法。它会将子类的原型设置为基类的一个实例,并确保子类的构造函数能够调用基类的构造函数。
  2. Base.call(this):在子类的构造函数中调用基类的构造函数,以确保基类的初始化逻辑被执行。
  3. module.exports:在每个文件中导出对应的类,以便其他文件可以导入并使用这些类。

这样,你就可以在两个不同的文件中定义基类和子类,并实现它们之间的继承关系。

回到顶部