2011年12月02日

closure

どうも塩内藤です。

昨日の続き

現場の人にパターン2でクロージャー作成でどうとでもって書いたら、「具体的にどんやんの?」って聞かれたのでその方法

クロージャーとは?って言われると自分もちょっと、、、
きっと、ある関数(無名関数とか)を他の関数の内部で宣言して、内部の関数から外側の関数のローカル変数を参照する。とかそんな感じw

んでは、実際のソースを以下に書いてみます。

UIUtil.js (クロージャー生成用のutilファンクションを別scriptに定義)

var UIUtil = function () {
};

UIUtil.prototype.createClosure = function (instance, callBackFunction) {
return function () {
callBackFunction.apply(instance, arguments);
};
};



昨日のパターン2をちょい変更してアラート出すだけのファンクションを作成
アラート表示のファンクションを呼び出すために、クリックイベントのハンドラー設定時にクロージャーを生成
※onHogeClick内のthisをPageControlにする

var PageControl = function () {
this.initialize();
}

PageControl.prototype.initialize = function () {
this.bindEventListener();
};

PageControl.prototype.bindEventListener = function () {
$("#hoge").click(UIUtil.prototype.createClosure(this, this.onHogeClick));
};

PageControl.prototype.onHogeClick = function (e) {
this.doAlert($(e.currentTarget).val() + "がクリックされたよー");
};

PageControl.prototype.doAlert = function (msg) {
alert(msg);
};

$(function (){
$.extend({controller : new PageControl()});
});


これでOK
言葉では説明できないけどとにかくこんな感じ!
posted by しお at 14:42| Comment(0) | TrackBack(0) | JavaScript