如何使用javascript删除完整对象?

如何使用javascript删除完整对象?,javascript,json,object,Javascript,Json,Object,我试过了,但删除不起作用 var x = {"y":42,"z":{"a":1,"b":[1,2,3]}}; alert(x.y); delete x; alert(x.y); // still shows '42' 如何删除完整对象交叉浏览器 编辑: x=null也不起作用不能删除变量或函数。只有对象的属性。您只需分配: x = null; 如果要清除其值 更新:关于职能的澄清: >> function f1() {console.log("aa");} >>

我试过了,但删除不起作用

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

alert(x.y);
delete x;

alert(x.y); // still shows '42'
如何删除完整对象交叉浏览器

编辑:
x=null也不起作用

不能删除变量或函数。只有对象的属性。您只需分配:

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
但是:


在Javascript中,不能从全局命名空间中删除对象


您可以删除x中的对象,但不能删除x本身。

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

x = null;

Try x=null;或x=未定义

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

在哪些浏览器中它不起作用是个好主意……x=null不起作用是什么意思?如果您指的是访问它,那么在将null赋值给x之后,x.y肯定会失败。如果您指的是回收内存,那么分配给x的对象将通过垃圾收集进行清理,如果Chrome控制台中没有其他对它的引用,我可以执行window.func1=函数{},然后删除window.func1。我还可以执行func2=函数{},然后执行delete。但是,我不能执行函数func3{}。对返回false的函数调用delete,函数保持不变。对于函数,不是true。请参阅下面我对@Spudley的评论。如果函数是对象的成员,则可以删除该函数。但是您不能删除全局定义的函数。您所说的全局定义是什么意思?默认情况下,“窗口”范围链下存在全局变量。从Chrome控制台func1=函数{}中尝试,然后删除window.func1。它将成功删除我更新了我的答案,以表明我在“你不能删除函数”下的意思。@Matt在开发人员控制台上运行这种JS代码充满了危险,因为代码被评估了,这可能会导致错误的结论。看看,了解原因。
x = null;