我尝试创建一个javascript类,并在加载时从HTML中实例化它的一些对象。该类包含一些函数和一些事件侦听器。
function Rating (id)
{
this.id = id;
$(id).click(function()
{
alert('click '+ this.id);
this.debug();
});
this.debug = function()
{
alert(' debug');
}
}
我的目标是从事件侦听器调用类函数(在本例中为debug
内部单击侦听器)。不幸的是,当我点击对象时,我只看到事件监听器警报而不是调试警报(fiddle)。
我知道这是一个基本问题。但是我发现的所有答案都解释了将类创建为变量而不是函数。我采用了这种方式,因为我的目标是在同一页面中创建类的多个实例。有没有办法使用"变量类来实例化多个对象"从对象调用内部函数?提前谢谢。
答案 0 :(得分:1)
经典之一,事件处理程序中的上下文是window
。
最简单的解决方案是在封闭范围内声明一个变量来存储您需要的值:
function Rating (id)
{
var r = this;
this.id = id;
$(id).click(function() {
alert('click '+ r.id);
r.debug();
});
this.debug = function()
{
alert(' debug');
}
}