有一点我想问,关于nodejs中的继承
发布于 12 年前 作者 huangdh3 13705 次浏览 最后一次编辑是 8 年前

很多都是exports,而没有继承,我想问下,exports方式有没有提供继承! 还是说继承的话要使用global来应用! 不知道大家有没有遇到需要继承的情况!

11 回复

继承用**util.inherits(constructor, superConstructor)**嘛,官方文档中的例子:

var util = require("util");
var events = require("events");

function MyStream() {
    events.EventEmitter.call(this);
}

util.inherits(MyStream, events.EventEmitter);

MyStream.prototype.write = function(data) {
    this.emit("data", data);
}

var stream = new MyStream();

console.log(stream instanceof events.EventEmitter); // true
console.log(MyStream.super_ === events.EventEmitter); // true

stream.on("data", function(data) {
    console.log('Received data: "' + data + '"');
})
stream.write("It works!"); // Received data: "It works!"

老雷,我恨你呀。。。为啥咱们这里没有表情呢。。。

这个官方的继承其实就是 js 的原型继承嘛,自己继承也是行的

exports是模块的概念,模块如何继承,只有模块内的class可以继承

把模块里的内容公布到 顶级的 prototype中即可,如 string.prototype

新代码高亮很赞啊!

var classA = require("./classa");

function classB() {
    classA.call(this);
}

util.inherits(classB, classA);
classB.prototype.fun = function() {

};

exports = module.exports = classB;

还可以用coffeescript,源代码看起来更简洁自然一些

哦,没看清问题 继承和export没啥冲突吧,两个概念,不就是export过来再继承?

回到顶部