メソッドと関数の違いに関しての覚書。
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.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。