2011-10-05 11 views
1

私はグローバル変数を読んでいるので、javascriptを初めて使う人はグローバルな名前空間を汚染するので、悪い習慣です。私が常に取り組んでいる の問題の1つは、可変スコープです。グローバルをカプセル化することは良いJavaScriptの実践ですか?

allvars = {} 

そして、このオブジェクト内のプロパティとして、私はそうでない場合はグローバルとして設定する任意の変数を固執する:私は両方の問題を解決する一つの方法は、空のオブジェクトを作成することであることをどこかで読ん

allvars.animal = 'bear'; 
allvars.sliderSpeed = 1000; 

これまでのところ、これは素晴らしいアイデアのように思えます。スコープに関係なくどこでも変数にアクセスでき、すべての変数が内部にあるので、 オブジェクトはグローバルではありません。

このようなやり方には欠点がありますか?より良い方法がありますか?

答えて

1

これらの変数がグローバルスコープでどこからでもアクセス可能である必要がある場合は、1つのグローバル変数allvarsがグローバル名前空間に導入されるため、これが望ましい方法です。私があなたの場合は、そのグローバル名をもう少しユニークにすることで、他のものと競合する可能性は低くなります。しかし、それ以外に、あなたは正しい方向に進んでいます。

実際にオブジェクト指向プログラミングに入ると、大部分の状態を関連する(グローバルではない)オブジェクトに保存してそこにアクセスできるようになるほど、本当にグローバルになる必要があるものはますます少なくなりがちです。明らかに、私たちはあなたのアプリケーションをこのケースでは知らないので、これらの設定がグローバルかどうかについて本当にコメントすることはできません。

関連する問題