我想知道两者之间的区别:
$('a').map(function(){return this})
$.map($('a'), function(){return this})
firebug
当我在控制台中测试它们时,它们的行为会有所不同。
刚刚经过简单测试,它们的表现确实不同。后者上下文中的“this”引用了窗口对象。但是,在遍历传入的对象/数组时,您确实可以访问当前元素:
$('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
当你调用一个集合时引用当前元素,.map()
而当你迭代一个集合时它引用窗口对象$.map()