The reason this set to obj appear to be these portions of jQuery.each() source
value = callback.apply(obj[i], args);
and
value = callback.call(obj[i], i, obj[i]);
where callback is function passed to jQuery.each() with obj set as this : array or object arguments passed to each for iteration
function (obj, callback, args) {
var value, i = 0,
length = obj.length,
isArray = isArraylike(obj);
To set this at jQuery.each() callback , try using Function.prototype.bind() on callback function passed to jQuery.each(obj, callback)
$.each([1,2,3], function(i){console.log(i, this);}.bind({foo:"bar"}))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>