0
jQuery.namespace = function() {
    var a = arguments, o = null, i, j, d;
    for( i = 0; i < a.length; i = i + 1) {
        d = a[i].split(".");
        o = window;
        for( j = 0; j < d.length; j = j + 1) {
            o[d[j]] = o[d[j]] || {};
            o = o[d[j]];
        }
    }
    return o;
};

jQuery.namespace("com.fc");

私はいくつかのJSコードに出くわしましたが、これがどのように機能し、何をするのか理解できません。文字列を使用して関数を呼び出しますが、関数は何も取りませんか?全体の目的は何ですか?

4

2 に答える 2

3

引数は、関数に渡されるすべての引数の配列です

の場合

jQuery.namespace("com.fc");

引数[0]は「com.fc」になります

すべての引数をループし、名前空間を「。」で分割しているように見えます。

次に、名前空間のウィンドウオブジェクトをトラバースしてハッシュを作成しようとし、最後に最下位レベルのハッシュを返します。

この関数を使用して、ウォーキングを使用してディープハッシュに名前空間変数を設定できるようです。

jQuery.namespace( "com.fc")。something = "yo"

または、名前空間にすでにデータまたは関数が入力されている場合

jQuery.namespace("com.fc").somefunction();
jQuery.namespace("com.fc").somevalue;

複数の名前空間を許可するという体操は、一見最後のように見えるものしか返すことができなかったので、なぜかわかりません。

于 2013-03-25T17:10:49.600 に答える
2

arguments関数に渡されるすべての引数を含む配列のようなオブジェクトであるjavascriptのキーワードです。

関数は各引数をループし、それぞれが文字列であると想定します。次に、文字列を「。」で分割します。そして、そのドット表記で表される深いオブジェクトを作成します。

空のオブジェクトを考えてみましょう{}。引数を指定してこのオブジェクトを操作するこの関数は、次の"com.fc"ようになります。

{
    com: {
        fc: {
        }
    }
}

この場合、その元のオブジェクトはwindowであるため、オブジェクトの奥深くまで歩く方法のドット表記ガイドとして文字列を使用して、ウィンドウ内に空のオブジェクトを作成します。

于 2013-03-25T17:12:33.973 に答える