Javascript'this'参考 - 有人可以解释这个简单的例子吗?

时间:2012-03-01 08:43:26

标签: javascript this

我正在深入研究JavaScript,我正在努力理解这个'这个'实际代码中的引用。有人可以解释一下这个'以下示例中的参考?

$('#myimage').mouseenter(function() {
    $(this).effect('bounce',500);
});​

我明白这个'这个'关键字指的是所拥有的'声明功能。这意味着在以下代码中,' this'将引用objectFunction函数返回的对象:

var objectFunction = function() 
    {
        var thing = function() { alert(this.toString());  };

        return { thing : thing };
    }
objectFunction().thing();

现在在第一个代码中,' this'关键字实际上是指DOM元素' myimage'。我能解决的是如何通过检查JavaScript来确定这一点。有人可以解释一下吗?

2 个答案:

答案 0 :(得分:3)

您的示例中的事件由jQuery处理,而不是由Javascript引擎处理。在Javascript中,可以设置'这个'是指调用函数时。 jQuery在函数上使用.apply方法来执行此操作。所以当jQuery解释选择器时,它会为每个匹配的对象调用你的处理函数,设置'这个'到匹配的对象。 E.g。

var handler = function() { alert(this.id) }

handler.apply(document.getElementById('something'));

在上面的示例中,' this'处理程序内部将引用id为"某些"的dom元素,并且警报将显示文本"某些内容"。

答案 1 :(得分:0)

在您的示例中,匿名函数是一个事件处理程序。 this关键字将引用触发事件的任何元素。在这种情况下,这只能是id为myimage的元素,因为事件仅绑定到该元素。情况不一定如此;考虑以下变体:

$('img').mouseenter(function() {
    $(this).effect('bounce',500);
});​

此代码将鼠标输入事件处理程序附加到文档中的所有图像标记。因此this可能会引用文档中的任何图像;这取决于鼠标光标“触摸”了哪个图像。