deepClone.js 585 B

1234567891011121314151617181920212223242526272829
  1. /**
  2. * 判断是否为数组
  3. *
  4. * @param {Object} arr
  5. */
  6. function isArray(arr) {
  7. return Object.prototype.toString.call(arr) === '[object Array]'
  8. }
  9. /**
  10. * 深度复制数据
  11. *
  12. * @param {Object} obj
  13. */
  14. function deepClone(obj) {
  15. if ([null, undefined, NaN, false].includes(obj)) return obj
  16. if (typeof obj !== 'object' && typeof obj !== 'function') {
  17. return obj
  18. }
  19. var o = isArray(obj) ? [] : {}
  20. for (let i in obj) {
  21. if (obj.hasOwnProperty(i)) {
  22. o[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i]
  23. }
  24. }
  25. return o
  26. }
  27. export default deepClone