extendDeep.js 749 B

12345678910111213141516171819202122232425262728
  1. var isPlainObj = require('./isPlainObj');
  2. var each = require('./each');
  3. var cloneDeep = require('./cloneDeep');
  4. exports = function(obj) {
  5. var i = 0;
  6. var ret = obj;
  7. var len = arguments.length;
  8. while (++i < len) {
  9. obj = arguments[i];
  10. if (isPlainObj(ret) && isPlainObj(obj)) {
  11. each(obj, function(val, key) {
  12. if (
  13. key === '__proto__' ||
  14. key === 'constructor' ||
  15. key === 'prototype'
  16. ) {
  17. return;
  18. }
  19. ret[key] = exports(ret[key], obj[key]);
  20. });
  21. } else {
  22. ret = cloneDeep(obj);
  23. }
  24. }
  25. return ret;
  26. };
  27. module.exports = exports;