此处http://www.quirksmode.org/js/this.html它表示“在JavaScript中此始终指向我们正在执行的函数的”所有者“,或者更确切地说,指向函数是方法的对象的。“
但是,由于嵌套的匿名函数,我在下面的代码示例中引用 this 的地方很困惑。
Drupal.behaviors.ajaxPoll = function(context) {
$('form.ajax-poll:not(.ajax-poll-processed)', context).addClass('ajax-poll-processed').each(function() {
// Find the form and poll wrapper items that will be affected.
var $form = $(this);
var $pollWrapper = $form.parents('.poll_content, .poll').filter(':first');
...
是函数的对象(指的是这个)Drupal.behaviors.ajaxPoll?
另外,我已经明白写$ form与编写jQueryform基本相同。在变量名中使用$ -sign的逻辑是什么?
答案 0 :(得分:1)
在javascript中,this
是动态的。根据函数的调用位置和方式,它可以采用不同的值。这与您可能知道的大多数OO语言非常不同,您可以静态定义this
的值。
在您的示例中,each
的jQuery文档声明this
将设置为当前枚举的元素。所以它应该是一个HTML表单元素。
这个(没有双关语)是javascript的一个非常混乱的方面,在互联网上有很多关于它的文章,我鼓励你阅读。
请注意,您可以使用this
将函数内的bind
值固定为特定值,无论调用者是什么。
答案 1 :(得分:1)
在这种情况下,this
引用每个form
元素,选择器匹配。
但从技术角度来看,它完全取决于each
方法的实施方式。
jquery的每一个都是使用javascripts apply
方法实现的,它允许手动定义this
在方法中引用的内容(就像我说的每个表单元素一样)。
答案 2 :(得分:0)
在第一个问题上无法肯定回答,但我可以在第二个问题上回答:
这只是一个命名约定,指定JQuery对象没有什么特别之处,请参阅答案here,它背后是一个Javascript对象