我試過了,但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