sys.inherits で継承を実現

> var sys = require('sys');
> sys.inspect(sys)
'{ print: [Function]\n, puts: [Function]\n, debug: [Function]\n, error: [Function]\n, inspect: [Function]\n, p: [Function]\n, log: [Function]\n, exec: [Function]\n, pump: [Function]\n, inherits: [Function]\n}'

いかにも継承に使えそうな sys.inherits って undocument だけどなんやねん、と思って調べてみた.

var Foo = function(){};
var Bar = function(){};
sys.inherits(Bar, Foo)

これで Bar を Foo の子クラスにできる。

親クラスのメソッドを呼ぶときは、call とか apply を使えばOK.

Bar.prototype.fun1 = function(name){
   Foo.prototyope.fun1.call(this, name)
}

とか

Bar.prototype.fun2 = function(){
   Foo.prototyope.fun2.apply(this, arguments)
}

とか。コンストラクタチェインも

var Bar = function(){
   Bar.call(this);
}

とかやればよい。