我试过了,但是delete
不起作用。
var x = {"y":42,"z":{"a":1,"b":[1,2,3]}};
alert(x.y);
delete x;
alert(x.y); // still shows '42'
如何删除完整对象的crossbrowser?
编辑:
x = null
也无效
答案 0 :(得分:4)
您无需在JavaScript中删除对象。在删除对它的所有引用后,将对象进行垃圾回收。要删除引用,请使用:
x = null;
答案 1 :(得分:4)
您只能使用delete运算符来删除隐式声明的变量,而不能删除使用var声明的变量。您可以设置x = null或x = undefined
答案 2 :(得分:3)
您无法删除变量或函数。只有对象的属性。您可以简单地指定:
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
答案 3 :(得分:2)
您无法在Javascript中从全局命名空间中删除对象。
您可以在delete
内x
个对象,但不能x
。{/ p>
答案 4 :(得分:1)
尝试x = null;
或x = undefined;
。