00001 var assignValue = require('./_assignValue'), 00002 copyObject = require('./_copyObject'), 00003 createAssigner = require('./_createAssigner'), 00004 isArrayLike = require('./isArrayLike'), 00005 isPrototype = require('./_isPrototype'), 00006 keys = require('./keys'); 00007 00009 var objectProto = Object.prototype; 00010 00012 var hasOwnProperty = objectProto.hasOwnProperty; 00013 00046 var assign = createAssigner(function(object, source) { 00047 if (isPrototype(source) || isArrayLike(source)) { 00048 copyObject(source, keys(source), object); 00049 return; 00050 } 00051 for (var key in source) { 00052 if (hasOwnProperty.call(source, key)) { 00053 assignValue(object, key, source[key]); 00054 } 00055 } 00056 }); 00057 00058 module.exports = assign;