Javascript 缓存了这个,jQuery

Javascript 缓存了这个,jQuery,javascript,jquery,Javascript,Jquery,我经常看到这样的代码: $('.element').on('click', function(event) { var element = this; // somecode that uses "element" }); 是否有任何理由缓存此 一旦进入函数或循环,此可能引用该函数中的对象。因此,明确地分配元素允许您始终访问它,与范围无关。一旦您在函数或循环中,此可能引用该函数中的对象。因此,明确地分配元素允许您始终独立于范围访问它。此不是jQuery元素,请将其包装在$(this)

我经常看到这样的代码:

$('.element').on('click', function(event) {
  var element = this;

  // somecode that uses "element"
});

是否有任何理由缓存此

一旦进入函数或循环,
可能引用该函数中的对象。因此,明确地分配元素允许您始终访问它,与范围无关。

一旦您在函数或循环中,
可能引用该函数中的对象。因此,明确地分配元素允许您始终独立于范围访问它。

不是jQuery元素,请将其包装在
$(this)


缓存很好,因为它存储元素,并且在尝试重新查找元素时不会占用内存或处理时间。但是,
会更改作用域,因此您可能不希望缓存该作用域。

不是jQuery元素,请将其包装在
$(此)


缓存很好,因为它存储元素,并且在尝试重新查找元素时不会占用内存或处理时间。但是,
会更改作用域,因此您可能不希望缓存该作用域。

如果代码包含需要访问
的闭包,则这是必需的
不是局部变量,因此它不会被捕获到闭包中,为此需要绑定局部变量


如果代码包含一个使用类似
$的函数的循环,则还需要它。each()
,循环体需要引用元素。这些函数将正文中的
this
重新绑定到当前迭代对象。

如果代码包含需要访问
this
的闭包,则这是必需的
不是局部变量,因此它不会被捕获到闭包中,为此需要绑定局部变量


如果代码包含一个使用类似
$的函数的循环,则还需要它。each()
,循环体需要引用元素。这些函数将正文中的
重新绑定到当前迭代对象。

如果需要在另一个代码范围中引用此,许多人会设置对该的引用。例如:

$('.element').on('click', function(event) {
  var element = this;

  // somecode that users "element"
  function foo() {
      //$(this).text() WONT Work!
      alert($(element).text()); //references the element that was clicked
  }
});

如果需要在另一个代码范围中引用,很多人会设置对该的引用。例如:

$('.element').on('click', function(event) {
  var element = this;

  // somecode that users "element"
  function foo() {
      //$(this).text() WONT Work!
      alert($(element).text()); //references the element that was clicked
  }
});

会根据范围进行更改。因此,您可能希望在某个时候引用原始文件。如果没有范围更改怎么办?
根据范围更改。因此,您可能希望在某个时候引用原始文件。如果没有范围更改怎么办?对象文字声明不会更改
绑定。函数可以。您可以在对象文本示例中使用
{text:function(){return$(this).text();}}}
,但是无论如何,现在示例都更正确了。只需修复您留下的“this references foo”部分<代码>=]抓得好!更新的代码。我的意思是,您的第一个示例中的注释“this references foo”不适用于您的新示例。
foo()
调用的
this
绑定将是
window
(或在严格模式下为
null
)。对象文字声明不会更改
this
绑定。函数可以。您可以在对象文本示例中使用
{text:function(){return$(this).text();}}}
,但是无论如何,现在示例都更正确了。只需修复您留下的“this references foo”部分<代码>=]抓得好!更新的代码。我的意思是,您的第一个示例中的注释“this references foo”不适用于您的新示例。
foo()
调用的
this
绑定将是
window
(或者在严格模式下为
null
)。