jQuery.map()中的“this”关键字

我想知道之间的区别:

$('a').map(function(){return this}) $.map($('a'), function(){return this}) 

当我在firebug控制台中测试它们时,它们的行为有所不同。

经过短暂的测试,他们的表现不同。 ‘this’在后者的上下文中引用了window对象。 但是,在循环传入的对象/数组时,您确实可以访问当前元素:

 $('a').map(function(){ return this }); $.map($('a'), function(el){ return el; }); 

后者通常用于非jQuery对象和数组,而前者用于此目的。

有关更多信息,请参阅文档:

http://api.jquery.com/map/

http://api.jquery.com/jQuery.map/

没有区别,我认为

 $('a').map(function(){return this}) 

是一个包装

 $.map($('a'), function(){return this}) 

实际上这是jQuery的源代码

 map: function( callback ) { return this.pushStack( jQuery.map(this, function( elem, i ) { return callback.call( elem, i, elem ); })); }, 

编辑 – 当然(我认为this是理所当然的) this是指当你在集合上调用.map()时它引用当前元素,当你用$.map()迭代一个集合时它引用了一个窗口对象