This functions use only objects, if you want extend arrays then one can use:
```js
if(source) {
       for(var prop in source) {
          var typeSourceKey = typeof source[prop];          
          if(typeSourceKey  == 'object' || typeSourceKey == 'array') {
             if(typeof obj[prop] == 'undefined')
                obj[key] = typeSourceKey == 'object' ? {}: [];
```