modules.define('objects', function(provide) {

provide({
    extend : function(target) {
        typeof target !== 'object' && (target = {});

        for(var i = 1, len = arguments.length; i < len; i++) {
            var obj = arguments[i];
            if(obj) {
                for(var key in obj) {
                    obj.hasOwnProperty(key) && (target[key] = obj[key]);
                }
            }
        }

        return target;
    },

    isEmpty : function(obj) {
        for(var key in obj) {
            if(obj.hasOwnProperty(key)) {
                return false;
            }
        }

        return true;
    },

    each : function(obj, fn, ctx) {
        for(var key in obj) {
            if(obj.hasOwnProperty(key)) {
                ctx? fn.call(ctx, obj[key], key) : fn(obj[key], key);
            }
        }
    }
});

});
@@ -40,16 +40,71 @@
 ide) %7B%0A%0A
+var hasOwnProperty = Object.prototype.hasOwnProperty;%0A%0A
 provide(
@@ -370,20 +370,16 @@
         
-obj.
 hasOwnPr
@@ -380,25 +380,35 @@
 sOwnProperty
-(
+.call(obj, 
 key) && (tar
@@ -570,36 +570,32 @@
 %0A            if(
-obj.
 hasOwnProperty(k
@@ -584,33 +584,43 @@
 f(hasOwnProperty
-(
+.call(obj, 
 key)) %7B%0A        
@@ -780,12 +780,8 @@
  if(
-obj.
 hasO
@@ -790,17 +790,27 @@
 Property
-(
+.call(obj, 
 key)) %7B%0A
@@ -914,11 +914,12 @@
  %7D%0A%7D);%0A%0A
-
 %7D);
+%0A

correct work with hasOwnProperty