我编写了这段代码来模拟 OOP 继承并在 javascript 中调用基类,它可以工作:
function Animal(name,age)
{
this._name = name;
this.setName = function (name) { this._name = name }
this.getName = function() { return this._name }
}
function Cat(name,age)
{
Animal.call(this,name,age); // call baseclass constructor
this.getName = function() { return Cat.prototype.getName.call(this)+", a cat" }
}
Cat.prototype = new Animal(); // will create the baseclass structure
/// ***** actual execution *****
var puss = new Cat("Puss",3);
var cheshire = new Cat("Cheshire",10);
// do some actions
console.log ( puss.getName() );
// change cat's name
puss.setName("Puss in boots");
alert ( "new name -->"+puss.getName() );
问题是,对于“new Cat()”的每个实例,“getName”和“setName”函数都会被复制。我已经阅读了很多关于原型设计的文章,但没有一篇涉及调用基类函数的问题。