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对象和数组,而前者用于此目的。
有关更多信息,请参阅文档:
没有区别,我认为
$('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()
迭代一个集合时它引用了一个窗口对象