prototype.jsは読み込まないけど、Class.create()構文が使いたい場合、以上のようなコードを書いてやれば使えるようになる。
今回は継承もできるようにしてみた。
// Class.createを可能にするための仕掛け
var Class = {create:function(proto, protoAppend){
var klass = function(){
if (this,arguments.length==1 && this,arguments[0] == "base_class") { return; }
this.initialize && this.initialize.apply(this,arguments);
}
klass.prototype = proto;
for (i in protoAppend) { klass.prototype[i] = protoAppend[i]; }
return klass;
}};
// 親クラスを定義
var Animal = Class.create({
initialize: function(){
WScript.echo('init animal');
},
action: function(){WScript.echo('animal!');}
});
// 継承したクラスを定義
var Dog = Class.create(new Animal("base_class"), {
initialize: function(){
WScript.echo('init dog');
},
action: function(){
WScript.echo('bow');
}
});
var Cat = Class.create(new Animal("base_class"), {
initialize: function(){
// super.initialize
Animal.prototype.initialize.apply(this, arguments);
WScript.echo('init cat');
},
action: function(){
WScript.echo('nya');
}
});
// テスト実行
a = new Animal();
a.action();
d = new Dog();
d.action();
c = new Cat();
c.action();