Javascript'这'参考资料-有人能解释一下这个简单的例子吗
Javascript 'this' reference - Can someone explain the simple example?
我正在深入研究JavaScript,我很难理解实际代码中的"this"引用。有人能解释一下下面例子中的"this"引用吗?
$('#myimage').mouseenter(function() {
$(this).effect('bounce',500);
});
我知道"this"关键字指的是拥有声明函数的任何东西。这意味着在以下代码中,"this"将指代objectFunction函数返回的对象:
var objectFunction = function()
{
var thing = function() { alert(this.toString()); };
return { thing : thing };
}
objectFunction().thing();
现在在第一段代码中,"this"关键字实际上指的是DOM元素"myimage"。我不知道如何通过检查JavaScript来确定这一点。有人能解释一下吗?
示例中的事件由jQuery处理,而不是由Javascript引擎处理。在Javascript中,可以设置调用函数时"this"所指的内容。jQuery在函数上使用.apply方法来实现这一点。因此,当jQuery解释选择器时,它将为每个匹配的对象调用处理程序函数,并将"this"设置为该匹配的对象。例如
var handler = function() { alert(this.id) }
handler.apply(document.getElementById('something'));
在上面的示例中,处理程序中的"this"将引用id为"something"的dom元素,警报将显示文本"somethings"。
在您的示例中,匿名函数是一个事件处理程序。this
关键字将指触发事件的任何元素。在这种情况下,这只能是id为myimage
的元素,因为事件仅绑定到该元素。事实并非如此;考虑以下变体:
$('img').mouseenter(function() {
$(this).effect('bounce',500);
});
此代码将鼠标输入事件处理程序附加到文档中的所有图像标记。因此this
可能指代文档中的任何图像;这取决于鼠标光标"触摸"了哪个图像。
相关文章:
- 简单的javascript在Shopify中不起作用
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 如何制作简单的php'在Javascript中的foreach等价物
- 你能解释一下这个阶乘函数是如何工作的吗?
- JQuery:向多个匹配结果添加换行符的最简单方法
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- Moment/Jquery-一个简单时间线的愚蠢问题
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 简单类测试未通过
- 简单地将拆分变量添加到对象中
- 通过javascript操作图像,非常简单
- 问题用moment JS制作一个简单的时间表
- 你能解释一下为什么这个javascript不正确吗
- 简单的ES6承诺问题-交换解决和拒绝参数
- 带有计数器、缩略图、进度条和淡入淡出效果的简单jQuery幻灯片
- 简单的JS函数.需要对变量进行澄清
- 简单的交换程序无法使用javascript
- Javascript'这'参考资料-有人能解释一下这个简单的例子吗
- 有人能用最简单的术语解释一下如何使用事件侦听器吗?
- 请解释一下这个简单的javascript面试问题背后的原理