可能重复:
如何使用任意原型制作可调用的 JS 对象?
假设我们有多个单独的函数,我们可以在它们自己的上下文中单独调用它们;但它们也继承了一些其他对象的原型。像这样:
//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;
换句话说,有没有办法让两个对象继承另一个对象的原型,但仍然可以作为函数调用?
注意:我将在 Adobe ExtendScript(又名 Crippled Javascript)中使用它,它对现代 javascript 了解不多。就像, Object.defineProperty 在其中不起作用。那么,有没有一种正常的、标准的方法来做到这一点?