私の問題は、関数を特定のオブジェクトのリスナーとして追加しようとすると、this
呼び出されている関数が作成されたスコープが考慮されないことです。
ライブデモ: http://jsfiddle.net/Ht4x9/
ご覧のとおりshowAct()
、「MyActivity」が表示されますが、赤をクリックしても表示<div>
されません。結果は次のとおりです。
MyActivity
undefined
<div>
クリックして印刷するにはどうすればよいですか?関数の引数としてオブジェクトを渡すことは本当に必要ですか? できるだけきれいに仕上げたいと思います。
念のため以下にコードを貼り付けます
ありがとうございました!
JS
var activity = 'MyActivity';
var Screen = {
act: activity,
_privFunc: function()
{
console.log(this.act);
},
publicFunc: function()
{
$('div').on('click', this._privFunc);
},
showAct: function()
{
this._privFunc();
}
}
Screen.publicFunc();
Screen.showAct();
HTML + CSS
<div>CLICK</div>
div { background: red; width: 100px; height: 100px; cursor: pointer; font-weight: bold