このコードは、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」関数が複製されることです。私はプロトタイピングに関する多くの記事を読みましたが、基本クラス関数の呼び出しの問題に対処したものはありませんでした。