私の歴史と今

振り返ると恥ずかしくなるのが私の歴史。だけどそのときは真面目に書いていた訳でね。そんな今の私を書いていく。

callメソッドのテスト

call, applyメソッドの意味がやっとわかった。

// nameプロパティを持つオブジェクトのコンストラクタ
var Human = function(name){
	this.name = name;
};

// オブジェクトの作成
var ken = new Human('ken');
var yamada = new Human('yamada');

// 関数オブジェクトの作成
var showName = function(){
	alert(this.name);
};

// ken, yamadaコンテキスト内でshowName関数を呼び出す
// つまり、ken, yamadaオブジェクトがshowNameメソッドを
// あたかも所有しているようにshowNameメソッドを呼び出す。
showName.call(ken);     // "ken"と表示される
showName.call(yamada);  // "yamada"と表示される

別のコンストラクタを使用して、追加機能を付与することもできる。

// 別のコンストラクタ
var Cons = function(){
	this.showName = function(){
		alert(this.name);
	};
};

// showNameメソッドを付与
// Consコンストラクタ内のthisがkenに当たる。
Cons.call(ken);

// 付与されているので"ken"と表示される。
ken.showName();
// 付与されていないのでエラー
yamada.showName();