私はグローバル変数の多くを使用してJavaScriptのアプリを書いている:'ウィンドウ'のエイリアスを作成する方法は?
window.x = 0;
window.y = 0;
私はウィンドウオブジェクトのエイリアスを使用できるようにしたいと思います。しかし
w = window;
w.x = 0;
w.y = 0;
、とき私は窓にwを設定し、再帰的にDOMに自分自身を追加しているようだ:
w = window;
// In the DOM Explorer:
> w page.html
> w page.html
> w page.html...
それはメモリを台無しようにこれが見えますが、アプリが細かい実行されています。グローバル変数やウィンドウエイリアスを作成する良い方法はありますか?
理由だけで、あなたは 'window.'を追加する必要はありません、あなたのスクリプトの先頭に、すべての外でそれらを宣言していませんか?または、名前と名前空間を再利用していますか? –
'window.window.window.window.document.title'は合法であり、RAMを無駄にしません...同じように、' w == window'、 'wwww == window.w.window.w' 。つまり、問題はありません... – dandavis
_ "それは再帰的にDOM自体に追加されているようです" _実際にはDOMではなく、ウィンドウは厳密にはその一部ではありません。しかし、とにかく、ウィンドウはブラウザ内で実行されるJSの一番上のオブジェクトであり、あなたが宣言した_every_グローバル変数はウィンドウオブジェクトのプロパティになります - ここでもあなたの 'w'変数はどんな値を持っていますかその中に。 JS変数と実際のHTML要素オブジェクトの間の循環参照は、ブラウザーでは問題でしたが、IEはイベント処理と組み合わせて有名なメモリーホールを持っていました。しかし、あなたがここでやっていることは、ブラウザーに何の問題も起こさないはずです。 – CBroe