我试过了,但delete
不起作用。如何用javascript删除完整对象?
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
也不起作用
我试过了,但delete
不起作用。如何用javascript删除完整对象?
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
也不起作用
您只能使用delete操作符来删除隐式声明的变量,但不能使用var声明变量。你可以设置x = null或者x = undefined
不能删除变量或函数。只有一个对象的属性。你可以简单地分配:
x = null;
如果你想清除它的值。
UPDATE:澄清有关职能:
>> 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
您无法从Javascript中的全局命名空间中删除对象。
您可以在之内delete
对象,但不是x
本身。
从Chrome控制台,我可以执行'window.func1 = function(){}',然后'删除window.func1'。我也可以通过'func2 = function(){}'来执行删除操作。但是,我不能'功能func3(){}'。调用delete函数返回false,并且该函数保持不变。 – Matt 2012-04-03 21:16:27
您不需要删除JavaScript中的对象。在删除所有对其的引用后,该对象将被垃圾收集。要删除参考,使用方法:
x = null;
尝试x = null;
或x = undefined;
。
在哪个浏览器中它不起作用会是一个好主意... – ThiefMaster 2012-04-03 21:12:29
你是什么意思x = null不起作用?如果你指的是访问它,x.y在将null分配给x之后肯定会失败。如果您指的是回收内存,那么如果没有其他引用,则分配给x的对象将被垃圾回收清除。 – Matt 2012-04-03 21:23:43