UNPKG

741 BJavaScriptView Raw
1// Copyright 2016 Luca-SAS, licensed under the Apache License 2.0
2
3'use strict';
4
5module.exports = function sizeof(obj) {
6 var size = 0;
7
8 function sizeOf(obj) {
9 var i;
10 if (obj === undefined || obj === null) return size;
11 switch (typeof obj) {
12 case 'number':
13 size += 8;
14 break;
15 case 'string':
16 size += obj.length * 2;
17 break;
18 case 'boolean':
19 size += 4;
20 break;
21 case 'object':
22 if (obj instanceof Array) {
23 size += 8 * obj.length;
24 for (i = 0; i < obj.length; i++) sizeOf(obj[i]);
25 } else {
26 for (i in obj) {
27 size += i.length * 2;
28 sizeOf(obj[i]);
29 }
30 }
31 break;
32 }
33 return size;
34 }
35 return sizeOf(obj);
36};