独自のコンテキストで個別に呼び出すことができる複数の個別の関数があるとします。しかし、それらは他のオブジェクトのプロトタイプも継承しています。このような:
//Here is the parent object:
var Human = function(){
this.isAlive = true;
};
Human.prototype.say = function(what){
alert(what + '!');
};
//These will inherit from it:
var ninja = function() {
alert("I'm a ninja!");
}
var samurai = function(){
alert("I'm a samurai!");
}
//Now, how can I make ninja and samurai behave like this:
ninja(); //I'm a ninja!
samurai(); //I'm a samurai!
ninja.say('Hello'); //Hello!
//And they should keep their inheritance. Like:
Human.prototype.die = function(){
this.isAlive = false;
}
ninja.die();
ninja.isAlive == false;
samurai.isAlive == true;
言い換えれば、別のオブジェクトのプロトタイプを継承しながら、関数として呼び出し可能な 2 つのオブジェクトを持つ方法はありますか?
注:これをAdobe ExtendScript(別名Crippled Javascript)で使用しますが、最新のjavascriptはあまり知りません。同様に、 Object.defineProperty は機能しません。それで、これを行う通常の標準的な方法はありますか?