0

我试过了,但delete没有用。

var x = {"y":42,"z":{"a":1,"b":[1,2,3]}};

alert(x.y);
delete x;

alert(x.y); // still shows '42'

如何删除整个对象跨浏览器?

编辑: x = null也不起作用

4

5 回答 5

5

只能使用 delete 运算符删除隐式声明的变量,而不能删除使用 var 声明的变量。您可以设置 x = null 或 x = undefined

于 2012-04-03T21:16:41.323 回答
4

您不能删除变量或函数。只是对象的一个​​属性。您可以简单地分配:

x = null;

如果你想清除它的值。

更新:关于功能的说明:

>> function f1() {console.log("aa");}
>> f1();
aa
>> delete f1;
false
>> f1();
aa

但是如果将全局函数声明为窗口属性,则可以将其删除:

>> f1 = f1() {console.log("aa");}
>> delete window.f1;
true

变量也是如此:

>> a = "x";
>> console.log(a);
x
>> delete window.a;
true
>> console.log(a);
ReferenceError: a is not defined

但:

>> var a = "x";
>> console.log(a);
x
>> delete a;
false
>> console.log(a);
x
于 2012-04-03T21:12:32.883 回答
4

您不需要在 JavaScript 中删除对象。在删除对它的所有引用后,该对象将被垃圾收集。要删除引用,请使用:

x = null;
于 2012-04-03T21:13:34.037 回答
2

您不能从 Javascript 的全局命名空间中删除对象。

您可以delete在 内创建对象x,但不能在x其内创建对象。

于 2012-04-03T21:13:23.140 回答
1

尝试x = null;x = undefined;

于 2012-04-03T21:14:19.640 回答