Javascript 在事件处理程序中,在$(此)[0]表达式中指定[0]的原因是什么?

Javascript 在事件处理程序中,在$(此)[0]表达式中指定[0]的原因是什么?,javascript,jquery,web,Javascript,Jquery,Web,我目前正在学习jquery,在我的教程中遇到了以下代码: $('textarea').scroll(function(){ var y = $('textarea')[0].scrollHeight; var x = $(this)[0].scrollHeight; }); 我的问题是关于[0] 我知道$('textarea')是一个数组,如果我只需要第一个元素的滚动高度,那么添加[0]是有意义的。 但是当我在事件处理程序中时,根据定义,$(this)是单个元素 (当前正在滚动

我目前正在学习jquery,在我的教程中遇到了以下代码:

$('textarea').scroll(function(){
    var y = $('textarea')[0].scrollHeight;
    var x = $(this)[0].scrollHeight;
});
我的问题是关于[0]
我知道$('textarea')是一个数组,如果我只需要第一个元素的滚动高度,那么添加[0]是有意义的。
但是当我在事件处理程序中时,根据定义,$(this)是单个元素
(当前正在滚动的元素)。
那么为什么我要指定第[0]个对象,其中$(this)显然是一个单一对象,而不是数组
谢谢你

注:如果你投了反对票,请对原因进行评论

总结评论中的各种观点

如果您有一个DOM元素,并且希望从中访问属性,则没有理由执行
$(元素)[0]。属性
,因为[0]只是从jQuery结果堆栈中获取第一个元素,这是您给它的单个元素

如果您正在执行查询,并且希望从其中一个查询中获取属性,那么有几种方法可以做到这一点

//get the 5th element off the stack and access the property
$(selector)[4].property
//get the 5th element off the stack, with the jQuery method, and access the property
$(selector).get(4).property
//get the 5th element off the stack, as a jQuery object still, and get the property with the jQuery method
$(selector).eq(4).prop('property')

是的,不要这样做,
$(this)[0]
,因为创建jQuery对象是毫无意义的。jQuery对象不是数组。它们是“类似数组”的,我将开始寻找另一个tutorial.learn.jquery.com和try.jquery.com对于初学者来说是很好的资源在本例中使用[0]的主要原因是,开发人员想要查看的属性在jquery集合上不可用,但在dom节点上可用。由于
已经是一个dom节点,因此没有理由首先将其设置为jquery集合。明确地说,您可以执行
此操作。scrollHeight
而不是
$(此)[0]。scrollHeight
谢谢。如果你认为我的问题很有价值,请投我的赞成票