代码1 :
var array = [];
for (var i = 0 ; i < 100000; i++) {
array.push({ name: "keatkeata" });
}
代码2 :
var array = [];
for (var i = 0 ; i < 100000; i++) {
var obj = new Object();
var str = new String("keatkeata");
obj.name = str;
array.push(obj);
obj = null;
}
代码1和代码2出来的结果是一样的。
但是代码1用的内存是 6.xM 而代码2用了 10M
为什么呢?
其实这和C#原理差不多。
str 也是对象也可以用指针表示
所以呢 代码1其实是new String("keatkeat") 了一次而已,之后的都引用同一个对象
而代码2这是 new String 了很多次,所以内存就消耗很多了!
JSON.parse 就是用了第2种方法,所以你会发现本来没消耗那么多的,结果JSON.parse 后变多了!
当然如果你的字符串都是不同的,游览器也就没法优化了,要注意了哦!
字符串的内存优化(游览器内置)
时间: 2024-11-07 17:14:49