私は試しましたが、delete
は動作しません。javascriptで完全なオブジェクトを削除するには?
var x = {"y":42,"z":{"a":1,"b":[1,2,3]}};
alert(x.y);
delete x;
alert(x.y); // still shows '42'
フルオブジェクトクロスブラウザーを削除するにはどうすればよいですか?
編集: 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'
フルオブジェクトクロスブラウザーを削除するにはどうすればよいですか?
編集: x = null
も
暗黙的に宣言された変数は削除演算子で削除できますが、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
but:
>> var a = "x";
>> console.log(a);
x
>> delete a;
false
>> console.log(a);
x
Javascriptのグローバル名前空間からオブジェクトを削除することはできません。
x
のオブジェクトではありますが、x
ではできません。
Chromeコンソールからは、 'window.func1 = function(){}'、 'delete window.func1'を実行できます。 'func2 = function(){}'の後にも削除を行うことができます。しかし、私は 'function func3(){}'を行うことはできません。 delete onを呼び出すとfalseが返され、関数はそのまま残ります。 – Matt
JavaScriptでオブジェクトを削除する必要はありません。オブジェクトへのすべての参照が削除された後、オブジェクトはガベージコレクションされます。参照を削除するには、使用:
x = null;
はx = null;
またはx = undefined;
を試してみてください。
どのブラウザでうまく動作しないかについて言及するとよいでしょう... – ThiefMaster
x = nullが機能しないということを意味しますか?あなたがそれにアクセスすることを言及しているならば、xにnullを代入した後、x.yは失敗するでしょう。メモリを再利用することを指している場合は、他の参照がない場合は、xに割り当てられたオブジェクトはガベージコレクションによってクリーンアップされます。 – Matt