メソッドと関数 : ActionScript

Pocket

メソッドと関数の違いに関しての覚書。

thisを用いて定義された関数をメソッドと呼ぶ。
メソッドはthisキーワードによる自身※1への参照を持つ。
thisを使わない通常の関数はthisキーワードによる自身への参照を持たない※1

※1 自身とはそのメソッドが定義されたオブジェクト。
※2 ムービークリップのイベントハンドラに対応付けられた関数はthisキーワードによる参照が可能になる。しかしこの場合のthisはイベントが発生したオブジェクト。

function Custom() {
	var privateProp = 'プライベート';
	this.publicProp = 'パブリック';
	// 関数
	var func = function () {
		trace('1 : ' + privateProp );		// ---1
		trace('2 : ' +this.publicProp);		// ---2
	};
	// メソッド
	this.method = function() {
		trace('3 : ' +privateProp);		// ---3
		trace('4 : ' +this.publicProp);		// ---4
	};
	// 初期化(メソッド)
	this.init = function() {
		func();
		this.method();
	};
}
var o = new Custom();
o.init();

実行結果

1 : プライベート
2 : undefined
3 : プライベート
4 : パブリック
function Custom()
{
	var privateProp = 'プライベート';
	this.publicProp = 'パブリック';
	this.f;
	// 関数
	var func = function ()
	{
		trace('1 : ' + privateProp);
		// ---1
		trace('2 : ' + this.publicProp);
		// ---2
	};
	// メソッド
	this.method = function()
	{
		trace('3 : ' + privateProp);
		// ---3
		trace('4 : ' + this.publicProp);
		// ---4
	};
	// 初期化(メソッド)
	this.init = function()
	{
		// func関数実行
		func();
		// methodメソッド実行
		this.method();
		// func関数をfメソッドへ設定
		this.f = func;
		// fメソッド実行
		this.f();
	};
}
var o = new Custom();
o.init();

実行結果

1 : プライベート
2 : undefined
3 : プライベート
4 : パブリック
1 : プライベート
2 : パブリック

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。