ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptに基づく名前空間関数の簡易解析_基礎知識

JavaScriptに基づく名前空間関数の簡易解析_基礎知識

WBOY
WBOYオリジナル
2016-05-16 17:29:551025ブラウズ

NetEase や Sina などの Web サイトでこれに似たものが使われているのを見て、当時の私の JS レベルはほんの一滴にすぎず、その場で衝撃を受けました。
でも今回は、今後見たときに混乱しないように自分なりに分析してみようと思います。

コードをコピー コードは次のとおりです:

//呼び出し例: bradio.namespace( "brADIO. lang.array");
//以下はBaiduでコンパイルしたソースコードです。変数は全てa,b,c,d...仕様点は後ほど書き直します。
//さて、分析を始めましょう
bradio.namespace = function () { //ネームスペースを作成します
var a = argument, //["brADIo.lang.array"]
b = null, //上位レベルのオブジェクトを格納するために使用されます
c, d, e, f; //c はカウンター、d は内部ループのカウンター、e は分割名前空間配列、f は引数 パラメーター 長さ
c = 0;
for (f = a.length; c e = ("" a[c]).split("."); //Split 分割後、名前空間を分割します ["brADIO", "lang", "array"]
b = bradio; //基本オブジェクト、このオブジェクトに基づいて名前空間を追加します
for (d = "brADIO" = = e[0] ? 1 : 0; d < e.length d ) //最初のものが bradio の場合、["bradio","lang","array"]
b[ d]] = b[e[d]] || b = b[e[d]]
b = b[e[d]] {} // 現在のオブジェクトが操作されている場合現在のオブジェクトを使用します。存在しない場合は、空のオブジェクトを割り当てます。
//b = b[e[d]] //単語オブジェクト b でカバーします。 object
}
return b//オブジェクトの最後のレイヤーを返します
};

以下のように整理されており、バージョンを理解していることがわかります

コードをコピーします コードは次のとおりです:
//bradio.namespace("brADIo.lang.array");
bradio.namespace = function () { //名前空間を作成します
var args = argument,
parent = null,
arr, i, j, len;
for (i=0, len) = args.length; arr = ("" args[i]).split(".");
親 = bradio;
for(j = " "== arr [0]?1:0; j&lt; arr.length; j){
parent [arr [j]] = parent [arr [j]] || {};
は完全に正しくありません。皆さんを誤解させないように、指摘を手伝ってください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。