現在、私は大量のJavaScript、jQuery、MicrosoftクライアントJavaScript、およびその他のライブラリを使用するレガシーWebページに取り組んでいます。要点-ビジネスが正当化できないため、ページ全体を一から書き直すことはできません。だから...それはそれが何であるかです。とにかく、私は変数を使ってグローバル名前空間を汚染する必要があります(私も試してみました)。私が考えていた3つのオプションがあります-
通常のJavaScript宣言-_var x = 0;
_を使用して保存/取得するだけです
JQueryを使用してDOMタグの値を保存/取得します-$("body").data("x", 0);
非表示のフォームフィールドを使用し、jQueryで値を設定/取得します-$("whatever").data("x", 0);
もっと良い方法はありますか?既存のコードの山を見ましたが、変数を関数内でスコープできるとは思いません。
次のように、jQueryオブジェクト内に名前空間を作成できます。
$.mynamespace = {
myVar : "something",
myVar2 : "somethingElse"
};
または:
$.mynamespace = {};
$.mynamespace.myVar = "something";
$.mynamespace.myVar2 = "somethingElse";
「mynamespace」という名前のプラグインメソッドはすべて上書きされるため、適切な名前を使用してください。
私にとってこの状況に対処する最良の方法は、ウィンドウオブジェクトでオブジェクトを定義することです。
window.my_config =
{
my_var1 : 1,
my_var1 : 2,
my_var1 : 3
};
これにより、スコープがきれいに保たれます。そして、window.my_config
を使用してグローバルにアクセスするときはいつでも、コードを見ている人はだれでも、グローバルにアクセスしていることがわかります。
グローバルスコープでハッシュを作成し、それを名前空間として使用できます。
MyNamepace={}
MyNamespace.newvar = 'value'
// MyNamespace.newvar => 'value'
練習を共有するだけで、必要なJavaScriptファイルに適切なプレフィックスを持つグローバルオブジェクト/変数を作成します。このオブジェクトがテキストボックスになるページで作業している場合のように、名前を付けます。
g_TxtMyValue = 'value'; // g_ specifies it to be a global variable, it is one
// of the many conventions used
複数のグローバル変数がある場合は、次のような名前空間を持つこともできます。
my_txt = {}; // For a real site I would use a prefix relative to the project
// name instead of "my".
my_txt.testValueOne = 'Value one';
my_txt.testValueOne = 'Value two';
これらの変数は、初期化された後、Webサイト全体で利用可能になります。
これがお役に立てば幸いです。
アンダースコア isEmpty()
を使用します。
_.isEmpty('')
はtrue
を返します。
ちょっとしたお知らせ:
FancyboxはAJAX(つまり、iFrame内でロードする場合、closeメソッドに「親」を追加する必要があります)を実行していますか?
parent.$.fancybox.close();