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); }
とかやればよい。