1. function memorySizeOf (obj) {
    2. var bytes = 0
    3. function sizeOf (obj) {
    4. if (obj !== null && obj !== undefined) {
    5. switch (typeof obj) {
    6. case 'number':
    7. bytes += 8
    8. break
    9. case 'string':
    10. bytes += obj.length * 2
    11. break
    12. case 'boolean':
    13. bytes += 4
    14. break
    15. case 'object':
    16. var objClass = Object.prototype.toString.call(obj).slice(8, -1)
    17. if (objClass === 'Object' || objClass === 'Array') {
    18. for (var key in obj) {
    19. if (!Object.prototype.hasOwnProperty.call(obj, key)) continue
    20. sizeOf(obj[key])
    21. }
    22. } else {
    23. bytes += obj.toString().length * 2
    24. }
    25. break
    26. }
    27. }
    28. return bytes
    29. }
    30. function formatByteSize (bytes) {
    31. if (bytes < 1024) return bytes + ' bytes'
    32. else if (bytes < 1048576) return (bytes / 1024).toFixed(3) + ' KiB'
    33. else if (bytes < 1073741824) return (bytes / 1048576).toFixed(3) + ' MiB'
    34. else return (bytes / 1073741824).toFixed(3) + ' GiB'
    35. }
    36. return formatByteSize(sizeOf(obj))
    37. }

    等待补充⌛️