请教关于require和继承的问题
我现在想写一个模块,由于模块逻辑相对复杂,模块内部有很多文件,我使用类似OOP方式来组织这个模块,比如一个父类下面有N个子类,这些子类和父类之间仅仅是一些细致行为不同 Node中使用exports和require可以得到父类的对象,那么继承的代码是怎么写的呢?
示例代码如下:
person.js
Person = function () {
}
Person.prototype.hello = function () {
console.log('I am Person');
}
exports.Person = Person;
student.js
var person = require('./person');
var util = require('util');
function Student () {
person.call(this);
}
util.inherits(Student, person);
Student.prototype.say = function() {
console.log('I am student');
}
exports.Student = Student;
test.js
person = require('./person');
student = require('./student');
person.hello();
student.hello();
student.say();
这个基本上参照 http://cnodejs.org/topic/4fbae57dd46624c476072445 这个帖子来实现的,很诡异的报错了,求指导
util.js:538 ctor.prototype = Object.create(superCtor.prototype, { ^ TypeError: Object prototype may only be an Object or null at Function.create (native) at Object.exports.inherits (util.js:538:27)
9 回复
明白了,test中应该new这个对象
最后test中代码这样可以运行
person = require('./person');
student = require('./student');
p = new person.Person;
p.hello();
s = new student.Student
s.hello();
s.say();
什么样情况下需要new操作,什么样情况直接require就能用呢?为什么有些不用new呢,比如内置的http.xxx()就能工作