我正在深入研究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来确定这一点。有人可以解释一下吗?
答案 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
可能会引用文档中的任何图像;这取决于鼠标光标“触摸”了哪个图像。