// Javascript の Class 定義 (function)に継承機能を付加する
Function.prototype.extend = function(baseConstructor, prototypes) {

	// 派生クラスのコンストラクタの prototype プロパティに設定
	
	var F = function(){};
	F.prototype = baseConstructor.prototype;
	this.prototype = new F();

	// コンストラクタを示すプロパティを設定
	
	if(prototypes)
	{
		for(var prop in prototypes)
		{
			this.prototype[prop] = prototypes[prop];
		}
	}
	
	this.prototype.constructor = this;
	
	this.base = baseConstructor;

	
	return this;
};


/*

//名前の付け方について

・クラス内の外部からアクセスする変数、関数は大文字
・外部からアクセスしない変数は小文字
・外部からアクセスしない、かつgetXXX(), setXXX()を経由して編集する変数は_
ではじめてください。
・また、クラスはすべてClassで終わってください。
・それ自体をnewせず、継承のみされるクラスはBaseClassで終わらせてください。



//使い方

var ChildClass = function(){
	ChildClass.base.apply(this,[]);
	this.childClass=0;
	console.log("ChildClass called");


}.extend(BaseClass);
ChildClass.prototype.method = function(){
	console.log("ChildClass");
};


//(以下のようにもかける)

var ChildClass = function(){
	ChildClass.base.apply(this,[]);
	this.childClass=0;
	console.log("ChildClass called");


}.extend(BaseClass, {
	
	method : function(){ ... }
});


※※注意 extendしたmyClassに対して  myClass.prototype = { ... }; のようにはやらないこと!!


※親クラスの取得

・クラス内から
this.constructor.base

・クラス外から
ChildClass.base

※あるクラスに所属しているか確かめる

var myManager = new ChildClass();
if(myManager instanceof BaseClass)



*/

