我想知道:
之间的区别$('a').map(function(){return this})
$.map($('a'), function(){return this})
当我在firebug
控制台中测试它们时,它们的行为有所不同。
答案 0 :(得分:4)
刚刚进行了短暂的测试,他们的表现确实不同。 'this'在后者的上下文中引用了window对象。但是,在循环传入的对象/数组时,您确实可以访问当前元素:
$('a').map(function(){
return this
});
$.map($('a'), function(el){
return el;
});
后者通常用于非jQuery对象和数组,而前者用于此目的。
有关详细信息,请参阅文档:
答案 1 :(得分:2)
没有区别,我认为
$('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
是指当您在集合上调用.map()
时引用当前元素,而当您使用{迭代集合时它引用窗口对象时{1}}