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
)。