(function () {
//create object with two initail properties
var obj = {};
obj.a = { a1: 1, a2: 2 };
obj.b = { b1: 1, b2: 2 };
//create a new property 'c' and refer property 'a' to it
obj.c = obj.a;
//cyclic reference
obj.a = obj.b;
obj.b = obj.a;
//this function removes a property from the object
// and display all the three properties on console, before and after.
window.showremoveshow = function () {
console.log(obj.a, '-----------a');
console.log(obj.b, '-----------b');
console.log(obj.c, '-----------c');
//delete proprty 'a'
delete obj.a;
//comes undefined
console.log(obj.a, '-----------a');
//displays b
console.log(obj.b, '-----------b');
//still displays the initial value obj.a
console.log(obj.c, '-----------c');
}
})();
现在:删除obj.a并检查obj.c的值后,我们发现了 obj.c仍然是指obj.a的初始值,但是obj.a本身并不存在。这是一个内存泄漏。删除obj.a并且其初始值仍然存在。
编辑:这意味着,就像我们删除属性(obj.a)一样,即使之后它仍然存在。这可以在obj.c中看到。
答案 0 :(得分:1)
这不是内存泄漏。 obj.c只保存分配给obj.a的值的副本。
答案 1 :(得分:0)