我的问题是,当我尝试将函数添加为某个对象的侦听器时,它不尊重this
创建被调用函数的范围。
现场演示:http: //jsfiddle.net/Ht4x9/
如您所见,将打印“MyActivity”,但不会showAct()
单击红色。<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