2011-09-04 10 views
1

私はJavaScriptでバイナリツリーを実装しており、変数を関数に渡すことができ、初期コンテキスト内の変数の値を関数の中からundefinedに設定する必要があります。別のコンテキストでオブジェクトへの参照を削除する

例:この文脈で

var foo = {} 

function bar(a) { a = undefined } 

bar(foo) 

は、fooはまだ定義されています。

私はこれがこのようにはうまくいかないことを認識していますが、JSで同様のことをどうやって行えますか? また、fooは常にグローバルになるとは限りません。

答えて

1

fooがグローバルの場合、その名前を文字列として渡して、グローバルオブジェクトのプロパティとしてアクセスできます。ブラウザで

、あなたはwindowを使用したい:

var foo = {}; 

function bar(a) { window[ a ] = undefined; } 

bar('foo'); 

alert(foo); // undefined 

fooがグローバルでない場合、私はあなたが.eval()を使用せずにそれを行うことができるでしょうとは思いません。

関連する問題